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'。