问题描述 小白初学MySQL,创建用户这一步,发现根据原教程的步骤输入以下代码会出现报错 mysql> insert into user -> (host,user,password,select_priv,insert_priv,update_priv) -> values('localhost','clover',PASSWORD('clover123'),'y','y','y'); 报错信息为 ERROR 1054 (42S22): Unknown column 'password' in 'field list' 错误原因 在 MySQL5.7 中 user 表的 password 已换成了authentication_string。 password() 加密函数已经在 8.0.11 中移除了,可以使用 MD5() 函数代替。 解决办法 现在尝试用新方法创建用户,代码如下 mysql> create user 'clover'@'localhost' identified by 'clover123'; Query OK, 0 rows affected (0.00 sec) 通过这行代码我们创建了一个名为“clover”的用户,host的值是“localhost”,这个用户通过“123”鉴别,换句话说这个“123”就是密码。 然后我们可以指定这个用户的权限,在这我就授予clover五个权限叭,分别是:select_priv, insert_priv, delete_priv, create_priv, drop_priv, 代码如下 mysql> grant select,insert,delete,create,drop on *.* to 'clover'@'localhost' with grant option; Query OK, 0 rows affected (0.00 sec) 刷新生效,代码如下。 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 上面这个命令执行后会重新载入授权表。如果你不使用该命令,你就无法使用新创建的用户来连接mysql服务器,除非你重启mysql服务器。 验证结果 输出user表中host、user和authentication_string的信息,代码如下 mysql> select host,user,authentication_string from user; +-----------+-----------+-------------------------------------------+ | host | user | authentication_string | +-----------+-----------+-------------------------------------------+ | localhost | root | *43F663C76794F376514023A48A1F53DBDEC540F3 | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | clover | *664D2BC607BAA85C7DCA8E655CAB8BCE97951607 | +-----------+-----------+-------------------------------------------+ 3 rows in set (0.00 sec) 我们可以看到刚刚添加的用户clover在这里成功显示出来了。需要注意的是,authentication_string显示的是加密后的密码,和我原本输入的实际密码clover123是不一样der! 再看看权限方面 mysql> select user,select_priv,insert_priv,delete_priv,create_priv,drop_priv,reload_priv from user; +-----------+-------------+-------------+-------------+-------------+-----------+-------------+ | user | select_priv | insert_priv | delete_priv | create_priv | drop_priv | reload_priv | +-----------+-------------+-------------+-------------+-------------+-----------+-------------+ | root | Y | Y | Y | Y | Y | Y | | mysql.sys | N | N | N | N | N | N | | clover | Y | Y | Y | Y | Y | N | +-----------+-------------+-------------+-------------+-------------+-----------+-------------+ 3 rows in set (0.00 sec) 可以看到,由于我们对用户clover授予了select,insert,delete,create,drop权限,在对应的地方显示的是Y,而reload权限我们没授予,默认是N。 (责任编辑:IT) |