针对这个问题我可以给出以下的攻略,包括两种解决方法:
方法一:忘记密码的多种解决
步骤一:停止MySQL服务
在Linux系统中,运行以下命令停止MySQL服务:
sudo systemctl stop mysql
步骤二:编辑MySQL配置文件
使用文本编辑器打开MySQL配置文件,例如:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在配置文件中添加以下内容:
[mysqld]
skip-grant-tables
保存并退出编辑器。
步骤三:重新启动MySQL服务
运行以下命令重新启动MySQL服务:
sudo systemctl start mysql
步骤四:运行MySQL
使用以下命令运行MySQL服务器:
mysql -u root
此时,您将获得MySQL的 root shell 提示符以及无需密码的权限。
步骤五:更改密码
运行以下命令更改密码:
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
“new_password”是您想要设置的新密码,请将其替换为实际的新密码。
步骤六:重启MySQL服务
运行以下命令重新启动MySQL服务以应用更改:
sudo systemctl restart mysql
示例一
假设您忘记了在Ubuntu系统上安装的MySQL root用户的密码,并且遇到“Access denied for user 'root'@'localhost'”错误。
按照上述方法执行步骤,更新MySQL用户的密码(例如,“new_password”),以便您可以重新使用MySQL root用户。
方法二:通过Debian系统的sudo方式虚拟服务器恢复Mysql root密码
步骤一:以root身份登录到Linux服务器
使用SSH客户端连接到Linux服务器,并使用root用户登录。
步骤二:停止MySQL服务
在Linux系统中,运行以下命令停止MySQL服务:
sudo systemctl stop mysql
步骤三:创建一个密码重置脚本
使用您最喜欢的文字编辑器,创建一个名为 “reset_mysql_root_password.sh” 的 shell 脚本,内容如下:
#!/bin/bash
echo "Stopping the MySQL server"
sudo /etc/init.d/mysql stop
echo "Creating a backup of the existing MySQL data directory"
sudo mv /var/lib/mysql /var/lib/mysql.bak
echo "Creating a new MySQL data directory"
sudo mkdir /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
echo "Initializing the new MySQL data directory"
sudo mysql_install_db --user=mysql --datadir=/var/lib/mysql
echo "Starting the MySQL server with root privileges"
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
echo "Waiting for the MySQL server to start ..."
sleep 5
echo "Setting the new root password in MySQL"
mysql --user=root mysql << EOF
UPDATE user SET Password=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
EOF
echo "Stopping the MySQL server"
sudo killall mysqld
echo "Starting the MySQL server normally"
sudo /etc/init.d/mysql start
echo "Done"
请注意,在上面的脚本中,您需要将“new_password”替换为您想要设置的新密码。
步骤四:保存并退出编辑器
在编辑器中,保存并退出脚本文件。
步骤五:使脚本可执行
使用以下命令将脚本标记为可执行文件:
sudo chmod +x reset_mysql_root_password.sh
步骤六:运行脚本
运行以下命令以运行脚本:
sudo ./reset_mysql_root_password.sh
该脚本将停止MySQL服务,备份现有MySQL数据目录,创建新的MySQL数据目录,将新密码设置为“New_password”,启动MySQL服务,停止MySQL服务(此次在安全模式下)并最终以正常模式启动MySQL服务。
示例二
假设您在Debian虚拟服务器上忘记了MySQL的root用户密码,而没有使用sudo用户。按照上述步骤操作,可以创建并运行脚本以重置MySQL root用户密码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux mysql忘记密码的多种解决或Access denied for user ‘root’@’localhost’ - Python技术站