Ubuntu安装MySQL账号登录异常【解决方案】
重新安装MySQL
-
停止MySQL服务(如果还在运行):
sudo systemctl stop mysql
-
卸载已有的MySQL软件包(根据您的Ubuntu版本和MySQL安装方式可能略有不同):
sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove
-
清理残留文件:
删除MySQL的数据目录(这将删除所有数据库数据):sudo rm -rf /var/lib/mysql/
清理配置文件:
sudo rm -rf /etc/mysql/
-
更新软件包列表(确保获取最新可用的软件包信息):
sudo apt update
-
重新安装MySQL:
sudo apt install mysql-server
-
初始化MySQL并设置root密码:
在某些情况下,MySQL在安装过程中会提示您设置新的root用户密码。 -
检查MySQL服务是否启动成功:
sudo systemctl status mysql
-
登录MySQL服务器并验证连接:
mysql -u root -p
-
如需创建新用户或执行其他数据库管理任务,请使用相应的SQL命令进行操作。
请谨慎操作,特别是在删除MySQL数据目录时,因为这会永久删除该目录下的所有数据。确保备份任何重要数据。
修改身份验证规则
root用户默认可能使用 auth_socket
插件进行身份验证
要解决这个问题并切换回密码认证,请按照以下步骤操作:
-
停止MySQL服务:
sudo systemctl stop mysql
或者杀死所有mysql进程
sudo pkill -9 mysqld
-
临时禁用
auth_socket
插件并启动MySQL服务器以跳过权限表检查:sudo mysqld_safe --skip-grant-tables &
-
登录到MySQL客户端(无需密码):
mysql -u root
-
选择MySQL数据库:
USE mysql;
-
将root用户的认证插件从
auth_socket
更改为mysql_native_password
:UPDATE user SET plugin = 'mysql_native_password' WHERE User = 'root'; FLUSH PRIVILEGES;
-
现在应该可以为root用户设置新密码了:
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; FLUSH PRIVILEGES;
-
退出MySQL客户端:
EXIT;
-
关闭安全模式下的MySQL服务:
sudo pkill mysqld_safe
-
重新启动正常模式下的MySQL服务:
sudo systemctl start mysql
现在你应该能够使用新密码 '密码'
登录MySQL服务器了。
文件缺失
在尝试以安全模式启动MySQL服务时,由于/var/run/mysqld
目录不存在导致了问题。请按照以下步骤操作:
-
创建缺失的目录并设置权限:
sudo mkdir -p /var/run/mysqld sudo chown mysql:mysql /var/run/mysqld
-
确保MySQL服务已停止:
sudo systemctl stop mysql
-
再次尝试以安全模式启动MySQL服务,并跳过权限表检查:
sudo mysqld_safe --skip-grant-tables &
-
检查MySQL是否成功启动。如果mysqld_safe进程正在运行且没有错误输出,则可以继续进行下一步。
-
登录MySQL(此时无需密码):
mysql -u root
-
重置root用户的密码(或其它需要修改密码的用户):
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
-
退出MySQL客户端:
EXIT;
-
停止安全模式下的MySQL服务:
sudo pkill mysqld_safe
-
启动正常模式下的MySQL服务:
sudo systemctl start mysql
-
使用新密码登录MySQL:
mysql -u root -p
现在你应该能够使用新密码成功登录到MySQL服务器。如果仍然遇到问题,请查看
/var/log/mysql/error.log
文件获取更详细的错误日志。 -
重启系统
强制删除MySQL
要强制删除MySQL(在Linux系统中),请遵循以下步骤,但请注意这是一个彻底且不可逆的操作,请确保您已备份所有重要数据,并确定不再需要该数据库服务:
-
停止MySQL服务:
sudo systemctl stop mysql
-
确认MySQL服务是否已经停止:
sudo systemctl status mysql
-
删除MySQL的数据文件:
MySQL的数据通常存储在/var/lib/mysql
目录下。删除整个目录(这将删除所有数据库):sudo rm -rf /var/lib/mysql
-
使用包管理器卸载MySQL软件包:
对于Ubuntu/Debian:sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean
对于CentOS/RHEL:
sudo yum remove mysql-server mysql-libs # 或者对于较新版本的RHEL/CentOS使用dnf sudo dnf remove mysql-server mysql-community-server mysql-community-libs sudo dnf autoremove
-
清理配置文件和日志:
删除与MySQL相关的配置文件(根据实际安装情况可能有所不同):sudo rm -rf /etc/mysql/ sudo rm -rf /var/log/mysql/
-
移除MySQL用户和组(可选,仅在您确实不需要保留任何与MySQL相关的用户或组时执行):
sudo userdel -r mysql sudo groupdel mysql
-
最后清理缓存和依赖关系(如果适用):
对于Ubuntu/Debian:
sudo apt-get clean
对于CentOS/RHEL (with yum):
sudo yum clean all
对于RHEL/CentOS 8+ (with dnf):
sudo dnf clean all
完成上述步骤后,MySQL应该已经被彻底从系统中卸载。再次安装MySQL时,请确保按照官方文档或其他权威指南操作以确保正确安装和配置。