Ubuntu安装MySQL账号登录异常【解决方案】

Ubuntu安装MySQL账号登录异常【解决方案】

重新安装MySQL

  1. 停止MySQL服务(如果还在运行):

    sudo systemctl stop mysql
    
  2. 卸载已有的MySQL软件包(根据您的Ubuntu版本和MySQL安装方式可能略有不同):

    sudo apt-get remove --purge mysql-server mysql-client mysql-common
    sudo apt-get autoremove
    
  3. 清理残留文件
    删除MySQL的数据目录(这将删除所有数据库数据):

    sudo rm -rf /var/lib/mysql/
    

    清理配置文件:

    sudo rm -rf /etc/mysql/
    
  4. 更新软件包列表(确保获取最新可用的软件包信息):

    sudo apt update
    
  5. 重新安装MySQL

    sudo apt install mysql-server
    
  6. 初始化MySQL并设置root密码
    在某些情况下,MySQL在安装过程中会提示您设置新的root用户密码。

  7. 检查MySQL服务是否启动成功

    sudo systemctl status mysql
    
  8. 登录MySQL服务器并验证连接

    mysql -u root -p
    
  9. 如需创建新用户或执行其他数据库管理任务,请使用相应的SQL命令进行操作

请谨慎操作,特别是在删除MySQL数据目录时,因为这会永久删除该目录下的所有数据。确保备份任何重要数据。

修改身份验证规则

root用户默认可能使用 auth_socket 插件进行身份验证

要解决这个问题并切换回密码认证,请按照以下步骤操作:

  1. 停止MySQL服务

    sudo systemctl stop mysql
    

    或者杀死所有mysql进程

    sudo pkill -9 mysqld
    
  2. 临时禁用 auth_socket 插件并启动MySQL服务器以跳过权限表检查

    sudo mysqld_safe --skip-grant-tables &
    
  3. 登录到MySQL客户端(无需密码):

    mysql -u root
    
  4. 选择MySQL数据库

    USE mysql;
    
  5. 将root用户的认证插件从 auth_socket 更改为 mysql_native_password

    UPDATE user SET plugin = 'mysql_native_password' WHERE User = 'root';
    FLUSH PRIVILEGES;
    
  6. 现在应该可以为root用户设置新密码了

    ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
    FLUSH PRIVILEGES;
    
  7. 退出MySQL客户端

    EXIT;
    
  8. 关闭安全模式下的MySQL服务

    sudo pkill mysqld_safe
    
  9. 重新启动正常模式下的MySQL服务

    sudo systemctl start mysql
    

现在你应该能够使用新密码 '密码' 登录MySQL服务器了。

文件缺失

在尝试以安全模式启动MySQL服务时,由于/var/run/mysqld目录不存在导致了问题。请按照以下步骤操作:

  1. 创建缺失的目录并设置权限:

    sudo mkdir -p /var/run/mysqld
    sudo chown mysql:mysql /var/run/mysqld
    
  2. 确保MySQL服务已停止:

    sudo systemctl stop mysql
    
  3. 再次尝试以安全模式启动MySQL服务,并跳过权限表检查:

    sudo mysqld_safe --skip-grant-tables &
    
  4. 检查MySQL是否成功启动。如果mysqld_safe进程正在运行且没有错误输出,则可以继续进行下一步。

  5. 登录MySQL(此时无需密码):

    mysql -u root
    
  6. 重置root用户的密码(或其它需要修改密码的用户):

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
    
  7. 退出MySQL客户端:

    EXIT;
    
  8. 停止安全模式下的MySQL服务:

    sudo pkill mysqld_safe
    
  9. 启动正常模式下的MySQL服务:

    sudo systemctl start mysql
    
  10. 使用新密码登录MySQL:

    mysql -u root -p
    

    现在你应该能够使用新密码成功登录到MySQL服务器。如果仍然遇到问题,请查看 /var/log/mysql/error.log 文件获取更详细的错误日志。

  11. 重启系统

强制删除MySQL

要强制删除MySQL(在Linux系统中),请遵循以下步骤,但请注意这是一个彻底且不可逆的操作,请确保您已备份所有重要数据,并确定不再需要该数据库服务:

  1. 停止MySQL服务

    sudo systemctl stop mysql
    
  2. 确认MySQL服务是否已经停止

    sudo systemctl status mysql
    
  3. 删除MySQL的数据文件
    MySQL的数据通常存储在 /var/lib/mysql 目录下。删除整个目录(这将删除所有数据库):

    sudo rm -rf /var/lib/mysql
    
  4. 使用包管理器卸载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
    
  5. 清理配置文件和日志
    删除与MySQL相关的配置文件(根据实际安装情况可能有所不同):

    sudo rm -rf /etc/mysql/
    sudo rm -rf /var/log/mysql/
    
  6. 移除MySQL用户和组(可选,仅在您确实不需要保留任何与MySQL相关的用户或组时执行):

    sudo userdel -r mysql
    sudo groupdel mysql
    
  7. 最后清理缓存和依赖关系(如果适用):

    对于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时,请确保按照官方文档或其他权威指南操作以确保正确安装和配置。

  • 26
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值