原因:
关于该的错误原因是MySQL默认指定了严格模式,为了安全,严格模式禁止通过insert 这种形式直接修改mysql库中的user表进行添加新用户.
解决办法:
第一种:
找到MySQL的配置文件my.cnf,从里面找到这样一句话:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
STRICT_TRANS_TABLES是严格模式的意思,自需要将这段删除就可以使用Insert进行插入了,即改为:
sql_mode=NO_ENGINE_SUBSTITUTION
然后重启MySQL即可.
注意:MySQL之所以默认指定严格模式是为了保证安全,所以不推荐使用该方式进行修改.
第二种:
grant usage on *.* to 'username'@'hostname' identified by 'password' with grant option; //添加用户
grant all privileges on *.* to 'username'@'hostname' identified by 'password'; //添加权限
flush privileges; //更新权限
关于授权语句:
用户权限命令格式为:
GRANT privileges ON databasename.tablename TO 'username'@'host' [IDENTIFIED BY [PASSWORD] 'password'] [WITH with_option]
privileges -
用户的操作权限,如SELECT , INSERT , UPDATE 等.如果要授予所有的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.
with_option -
- GRANT OPTION:允许用户再将该权限授予其它用户;
- MAX_QUERIES_PER_HOUR:允许用户每小时执行的查询语句数量;
- MAX_UPDATES_PER_HOUR:允许用户每小时执行的更新语句数量;
- MAX_CONNECTIONS_PER_HOUR:允许用户每小时连接的次数;
- MAX_USER_CONNECTIONS:允许用户同时连接服务器的数量;
GRANT授权命令有很多更详细的使用,如果想详细了解可以查看:
https://blog.csdn.net/wulantian/article/details/38230635
https://www.cnblogs.com/xd502djj/p/3548283.html
这俩位的GRANT总结.
为了防止忘记,特地记下.