如何在mysql中创建一个无密码的root用户

4

我能够使用我创建的用户名和密码登录mysql。

我运行了SELECT user FROM mysql.user;

并显示了我的创建帐户和3个root实例。

1.) 如何查看任何root用户的密码?

2.) 如果无法完成,如何删除这些root用户,并创建一个没有密码的新root用户?

3个回答

7
您无法查看明文密码。
DELETE FROM mysql.user WHERE user='root' AND host <> 'localhost';
UPDATE mysql.user SET password = '' WHERE user='root';
FLUSH PRIVILEGES;

在进行此操作之前,您应该运行mysql_secure_installation
如果您无法使用root@localhost和没有密码重新登录,请执行以下操作:
SQLSTMT="GRANT ALL PRIVILEGES ON *.* to root@localhost"
SQLSTMT="${SQLSTMT} IDENTIFIED BY 'resetpwd' WITH GRANT OPTION;"
echo ${SQLSTMT} > /var/lib/mysql/init.sql
service mysql restart --init-file=/var/lib/mysql/init.sql
rm -f /var/lib/mysql/init.sql
SQLSTMT="UPDATE mysql.user SET password = '' WHERE user='root'"
SQLSTMT="${SQLSTMT} AND host='localhost'; FLUSH PRIVILEGES;"
mysql -uroot -presetpwd -e"${SQLSTMT}"
mysql -uroot

我已经这样做了,但是当我使用'mysql -u root'登录时,我收到错误消息'ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)'。你有什么想法或者知道发生了什么吗? - FluxEngine
mysql> UPDATE mysql.user SET password = '' WHERE user='root'; 错误 1054 (42S22):'field list' 中没有 'password' 列 - Nicodemuz
@Nicodemuz 从版本5.7及以上,请使用DELETE FROM mysql.user WHERE user='root' AND host <> 'localhost'; UPDATE mysql.user SET authentication_string = '' WHERE user='root'; FLUSH PRIVILEGES; - RolandoMySQLDBA

2

不建议使用空白密码的 root mysql 用户!

然而,以下是如何设置:

SET PASSWORD FOR root@127.0.0.1=PASSWORD('');

请注意,您必须以root身份登录mysql!

您的用户必须是具有SUPER权限的任何用户。 - danblack

0

root 的 3 个实例可能是针对主机变体的。换句话说,可能会有一个 root@localhost 和一个 root@%

如果您使用 phpMyAdmin,您可以删除不需要的用户,或者通过单击 Users 选项卡重置密码。

您可以检查不需要的用户,并在 Remove selected users 上单击 Go

或者,要重置特定用户的密码,您可以单击 Edit privileges,向下滚动到 Change password 部分,选择 No password,然后单击 Go

您可以从 这里 下载 phpMyAdmin,并且当然需要以 root 身份登录才能执行此操作。

Users Reset pass


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接