mysql问题小结

扫码查看

1、数据表存在,但查询时提示不存在

原因:默认情况下,mysql在windows对表名大小不敏感(lower_case_table_names=1),在linux上大小敏感(lower_case_table_names=0)。见更多

解决办法:对配置文件/etc/my.cnf添加配置项

[mysqld]
lower_case_table_names=1

2、navicat远程连接mysql数据库出现1045错误

原因:mysql服务没有授权

解决办法:给远程登录用户添加所有机器都能访问的权限

0、use mysql;
1、grant all privileges on *.* to 'root'@'%' identified by 'mysql' with grant option;
2、flush privileges;
3、select * from user;

命令格式:grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。

 3、Navicat数据传输从本地到虚拟机时出现[Err] [Dtf] 1115 - Unknown character set: 'utf8mb4'

原因:本地mysql版本为5.6,而虚拟机mysql版本为5.1,低版本不支持utf8mb4。

解决办法:升级虚拟机mysql至少到5.5.3。

4、同一段sql本地执行时间为0.4秒,而服务器带不动

原因:本地mysql版本为5.6.x,服务器为5.7.x,由于语句复杂服务器mysql默认解析会把一些查询进行合并优化,这个逻辑可能出现问题,而合开关"derived_merge" 选项在5.6.x或更早期版本不可用。

解决办法:关闭合开关,执行命令:set global optimizer_switch='derived_merge=off'。

05-11 11:07
查看更多