MySQL5.7 创建用户时出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'
时间:2022-12-15 13:56 来源:未知 作者:IT
问题描述
小白初学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)
问题描述 小白初学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) |