如何将root密码设置为null

时间:2010-01-20 13:40:23

标签: mysql mysql-management

如何从MySQL命令行客户端将root MySQL用户的密码更改为null - 意味着没有密码或''

20 个答案:

答案 0 :(得分:75)

为我和“5.7.11 MySQL社区服务器”工作:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

我还必须更改'plugin'字段,因为它被设置为'auth_socket'。

之后我可以在没有密码的情况下以mysql -u root身份连接。

答案 1 :(得分:53)

如果您想要一个空密码,您应该将密码设置为null,而不是使用密码哈希函数,如下所示:

在命令行上:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -uroot

在MySQL中:

use mysql;
update user set password=null where User='root';
flush privileges;
quit;

答案 2 :(得分:51)

  • 以root用户身份连接mysql(使用以下两种方法之一)
    • 以root身份登录并使用mysql -p启动mysql,输入当前root密码
    • 以self身份登录并使用mysql -u root -p启动mysql,输入当前root密码
  • mysql> set password = password('');

完成!没有root密码。

答案 3 :(得分:19)

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

答案 4 :(得分:14)

这对我来说在Ubuntu 16.04上使用v5.7.15 MySQL:

首先,确保安装了mysql-client(sudo apt-get install mysql-client)。

打开终端并登录:

mysql -uroot -p

(然后输入密码)

之后:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

(tnx @Stanislav Karakhanov)

最后一件重要的事情是重置mysql服务

sudo service mysql restart

您现在应该可以使用MySQL Workbench登录(不使用密码)。

答案 5 :(得分:14)

您可以通过以下五个简单步骤恢复MySQL数据库服务器密码。

步骤#1 :停止MySQL服务器进程。

第2步:使用--skip-grant-tables选项启动MySQL(mysqld)服务器/守护程序进程,以便它不会提示输入密码。

第3步:以root用户身份连接到mysql服务器。

步骤#4 :设置新的mysql root帐户密码,即重置mysql密码。

步骤#5 :退出并重启MySQL服务器。

以下是您需要为每个步骤键入的命令(以root用户身份登录):

第1步:停止mysql服务

# /etc/init.d/mysql stop

输出:

Stopping MySQL database server: mysqld.

第2步:启动没有密码的MySQL服务器:

# mysqld_safe --skip-grant-tables &

输出:

[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started

第3步:使用mysql客户端连接到mysql服务器:

# mysql -u root

输出:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

步骤#4 :设置新的MySQL root用户密码

mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit

第5步:停止MySQL服务器:

# /etc/init.d/mysql stop

输出:

Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+  Done                    mysqld_safe --skip-grant-tables

第6步:启动MySQL服务器并对其进行测试

# /etc/init.d/mysql start
# mysql      
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 
# mysql -u root -p

来源:http://www.cyberciti.biz/tips/recover-mysql-root-password.html

答案 6 :(得分:5)

直接编辑mysql数据库不是一个好主意。

我更喜欢以下步骤:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ''; 
mysql> flush privileges;

答案 7 :(得分:4)

仅对于MySQL 8.0:

SET PASSWORD FOR 'root'@'localhost' = '';

答案 8 :(得分:1)

user64141的回答

use mysql;
update user set password=null where User='root';
flush privileges;
quit;

在MariaDB 10.1.5中没有为我工作(应该是MySQL的替代品)。虽然没有在MySQL 5.6中测试它以查看是否是上游更改,但我得到的错误是:

  

ERROR 1048(23000):专栏'密码'不能为空

但用空单引号或双引号替换null工作正常。

update user set password='' where User='root';

update user set password="" where User='root';

答案 9 :(得分:1)

这是来自MySQL 8.0.13:

use mysql;

update user set authentication_string=null  where user='root';

quit;

答案 10 :(得分:1)

它对我有用。

ALTER USER'root'@'localhost'用mysql_native_password识别BY'密码'

答案 11 :(得分:0)

我正在使用nodejs和windows 10.两个答案的组合对我有用。

restart;

接下来是:

(\d{14}\s.*(?:\n*(?!^\d{14}).*)*)

希望这对那些仍然存在问题的人有所帮助。

答案 12 :(得分:0)

我注意到上面的一些解决方案现在已被弃用。

要设置一个空密码,只需执行以下步骤:

mysql -u root -p

use mysql

SET PASSWORD FOR 'root'@'localhost' = '';

\q (to quit)

now run: mysql -u root

您现在应该能够在没有密码的情况下启动mysql。

答案 13 :(得分:0)

这都是因为您安装了大于5.6版本的mysql

解决方案

1。您可以降级mysql版本解决方案

2使用
将身份验证重新配置为本机类型或旧式身份验证     配置选项

答案 14 :(得分:0)

想要将我自己的2cents放在这里bcuz,以上答案对我不起作用。 在centos 7上,mysql社区v8的shell是bash。

正确的命令如下:

# start mysql without password checking
systemctl stop mysqld 2>/dev/null
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" &&
systemctl start mysqld

# set default password to nothing
mysql -u root mysql <<- 'EOF'
    FLUSH PRIVILEGES;
    UNINSTALL COMPONENT 'file://component_validate_password';
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
    FLUSH PRIVILEGES;
    INSTALL COMPONENT 'file://component_validate_password';
EOF

# restart mysql normally
systemctl restart mysqld

然后您可以不使用密码登录:

mysql -u root

答案 15 :(得分:0)

我的MySQL 5.7变体:

停止服务mysql:

$ sudo service mysql stop

以安全模式运行:

$ sudo mysqld_safe --skip-grant-tables --skip-networking

(以上是整个命令)

打开一个新的终端窗口:

$ mysql -u root

$ mysql use mysql;

$ mysql update user set authentication_string=password('password') where user='root';

$ mysql update user set plugin="mysql_native_password" where User='root';

$ mysql flush privileges;
$ mysql quit;

运行mysql服务:

$ sudo service mysql start

答案 16 :(得分:0)

语法因版本而异。从这里的文档: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

MySQL 5.7.6及更高版本:

ALTER USER 'root'@'localhost' IDENTIFIED BY '';

MySQL 5.7.5和更早版本:

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

答案 17 :(得分:0)

连接到没有密码的mysql:

mysql -p SET PASSWORD = ""

https://dev.mysql.com/doc/refman/5.7/en/set-password.html

答案 18 :(得分:0)

如果您知道自己的Root密码并希望重置密码,请执行以下操作:

  • 从控制面板启动MySQL服务&gt;管理工具&gt;服务。 (只有在你之前被你停止的时候!否则,只需跳过这一步)

  • 启动MySQL Workbench

  • 输入此命令/ SQL行

    ALTER USER'root'@'localhost'PASSWORD EXPIRE;

重置任何其他用户密码...只需输入其他用户名而不是root用户名。

答案 19 :(得分:-1)

搜索了几个小时后,我发现了它。只需将密码更改为包含大写数字和特殊字符的密码即可。