2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Mysql5.7创建用户错误:ERROR 1364 (HY000): Field ‘ssl_cipher‘ doesn‘t have a default value解决方法

Mysql5.7创建用户错误:ERROR 1364 (HY000): Field ‘ssl_cipher‘ doesn‘t have a default value解决方法

时间:2019-03-08 17:53:23

相关推荐

Mysql5.7创建用户错误:ERROR 1364 (HY000): Field ‘ssl_cipher‘ doesn‘t have a default value解决方法

通常我们在MySQL数据库中的mysql.user表中使用insert语句添加新用户时

如以下代码:

insert into mysql.user(user,host,password) values('zyl218','localhost',password('123456//..'));

可能会出现以下错误:

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value

报错的意思为:

mysql用户表的中某些字段不能为空,没有默认值,其实是操作错误,mysql添加用户是不能这样直接insert user表的。因为mysql.user是一个视图,所以不支持插入。

报错原因为:

是在my.ini配置文件中有这样一条语句

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

指定了严格模式,为了安全,严格模式禁止通过insert 这种形式直接修改mysql库中的user表进行添加新用户

解决方法有两种:

修改mysql数据库的sql-mode严格检查使用grant授权方法进行创建

解决方法1:

STRICT_TRANS_TABLES

在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制.

将配置文件中的STRICT_TRANS_TABLES删掉,即改为:sql_mode=NO_ENGINE_SUBSTITUTION然后重启mysql即可

解决方法2:

在授权数据库的同时,如果对应的用户不存在,那么mysql将会自动创建对应的用户

GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

username替换为将要授权的用户名,比如clientusr;

password替换为clientusr设置的密码;

locaohost可以改为%,方便你从别的IP登录。

2、然后对你建的用户进行授权

grant all privileges on tablename.* to 'username'@' localhost' identified by 'password';

grant 权限 [privileges] on 数据库名.表名 to 用户名@”本地回环地址或localhost” identified by “密码”

3、生效授权,创建完毕

flush privileges;

练习:

grant all on *.* to 'yinke'@'%' identified by 'yinke123';尝试将all改为select权限,并且将*.* 改为security数据库。

答案为

grant select on security.* to 'yinke'@'%' identified by 'yinke123';

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。