我不知道我的MySQL根密码;我怎么才能知道呢?是否有存储此密码的文件?
我正在跟踪这个链接,但我在本地没有directadmin目录。
我不知道我的MySQL根密码;我怎么才能知道呢?是否有存储此密码的文件?
我正在跟踪这个链接,但我在本地没有directadmin目录。
当前回答
适用于Windows 10下的MySQL 5.5
您无法找到密码,因为它在表中是散列的,所以重置它是唯一的选择。
Lokesh kumar Chippada提供的通过.txt文件导入新密码脚本的解决方案对我不起作用。我发现命令提示符在启动导入后冻结了。
我在my.ini文件中添加了skip-grant-tables,就像tonycoupland在这篇SO帖子上的答案一样。
然后我就可以从命令行登录到mysql了
$ > mysql
然后在mysql中
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
请参见mysql开发页面的“B.3.3.2.3重置Root密码:通用说明”。我现在已经从my.ini文件中删除了skip-grant-tables,并且我可以使用我创建的新密码作为根用户登录。
其他回答
系统:
中佐的Linux 7 位于华盛顿市郊1414区
过程:
Open two shell sessions, logging in to one as the Linux root user and the other as a nonroot user with access to the mysql command. In your root session, stop the normal mysqld listener and start a listener which bypasses password authentication (note: this is a significant security risk as anyone with access to the mysql command may access your databases without a password. You may want to close active shell sessions and/or disable shell access before doing this): # systemctl stop mysqld # /usr/sbin/mysqld --skip-grant-tables -u mysql & In your nonroot session, log in to mysql and set the mysql root password: $ mysql mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass'); Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> quit; In your root session, kill the passwordless instance of mysqld and restore the normal mysqld listener to service: # kill %1 # systemctl start mysqld In your nonroot session, test the new root password you configured above: $ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. ... mysql>
我用另一种方法解决了这个问题,这对一些人来说可能更简单。
我这样做是因为我尝试在安全模式下启动,但无法连接到错误: ERROR 2002 (HY000):无法通过socket '/var/run/mysqld/mysqld连接到本地MySQL服务器。袜子”(2)
我所做的就是以root用户正常连接:
$ sudo mysql -u root
然后我创建了一个新的超级用户:
mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit
然后以myuser身份登录
$ mysql -u myuser -p -h localhost
尝试更改密码没有给我任何错误,但对我没有任何帮助,所以我放弃并重新创建根用户
mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;
根用户现在正在使用新密码
这招对我很管用:
在终端类型上执行如下操作
$ sudo mysql -u root -p
Enter password://直接按Enter
mysql >
适用于Windows 10下的MySQL 5.5
您无法找到密码,因为它在表中是散列的,所以重置它是唯一的选择。
Lokesh kumar Chippada提供的通过.txt文件导入新密码脚本的解决方案对我不起作用。我发现命令提示符在启动导入后冻结了。
我在my.ini文件中添加了skip-grant-tables,就像tonycoupland在这篇SO帖子上的答案一样。
然后我就可以从命令行登录到mysql了
$ > mysql
然后在mysql中
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
请参见mysql开发页面的“B.3.3.2.3重置Root密码:通用说明”。我现在已经从my.ini文件中删除了skip-grant-tables,并且我可以使用我创建的新密码作为根用户登录。
多亏了@thusharaK,我可以在不知道旧密码的情况下重置根密码。
在ubuntu上,我做了以下操作:
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking
然后在新的终端运行mysql:
mysql -u root
并执行如下命令修改密码:
UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;
在MySQL 5.7中,MySQL中的password字段。用户表字段被删除,现在字段名是'authentication_string'。
退出mysql安全模式,启动mysql服务:
mysqladmin shutdown
sudo service mysql start