1146 - Table 'mysql.servers' doesn't exist 解决办法
创建用户后 flush privileges; 刷新权限报错
1146 - Table 'mysql.servers' doesn't exist
查看mysql库中是否存在servers表,发现有这个表但是点击也报1146
后来发现一个解决办法如下:
1、drop table if exists mysql.servers;
2、运行表创建脚本
CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';
3、再次运行flush privileges;
1,2步虽然运行成功却报了一个1055错误
sql_mode不兼容only_full_group_by ,
SHOW VARIABLES LIKE '%sql_mode%'; 查看sql模式,包含only_full_group_by ,删除only_full_group_by即可。
查到网上有三种删除方法
一.select version(),@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
二.show variables like "sql_mode";
set sql_mode='';
set sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';
上述两种方法在数据库重启之后就会失效。
三.修改配置文件(推荐使用)
linux系统更改/etc/my.cnf文件,使用vi命令打开,如果有sql_mode=...的注释就把注释打开,如果没有就加上sql_mode=...(可以通过select @@sql_mode查出sql_mode以后去掉ONLY_FULL_GROUP_BY后复制过来)
windows下配置文件是安装目录下的my.ini文件,其余同上
my.ini文件添加语句如下:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION