LOADING

加载过慢请开启缓存 浏览器默认开启

重装 MySQL - ubuntu

重装MySQL

重装 MySQL 的步骤如下,确保在执行这些步骤之前备份任何重要数据,因为重装过程可能会删除现有的数据库和配置。

重装 MySQL 的步骤

  1. 卸载现有的 MySQL

    • 首先,您需要卸载当前安装的 MySQL。使用以下命令:
    sudo apt-get remove --purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
    
    • 这将删除 MySQL 服务器、客户端及其所有配置文件。
  2. 删除 MySQL 数据目录

    • 卸载后,您可能还需要删除 MySQL 的数据目录,以确保没有残留数据。默认情况下,数据目录位于 /var/lib/mysql。使用以下命令:
    sudo rm -rf /var/lib/mysql
    
    • 如果您使用了自定义数据目录(如 /data/mysql),请确保也删除该目录。
  3. 删除 MySQL 配置文件

    • 您还可以删除 MySQL 的配置文件,通常位于 /etc/mysql
    sudo rm -rf /etc/mysql
    
  4. 更新包列表

    • 在重新安装之前,更新您的包列表:
    sudo apt-get update
    
  5. 重新安装 MySQL

    • 使用以下命令重新安装 MySQL:
    sudo apt-get install mysql-server
    
    • 在安装过程中,您可能会被要求设置 MySQL 的 root 密码。
  6. 初始化 MySQL 数据目录(如果需要):

    • 在某些情况下,您可能需要手动初始化数据目录。可以使用以下命令:
    sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql
    
  7. 启动 MySQL 服务

    • 安装完成后,启动 MySQL 服务:
    sudo systemctl start mysql
    
    • 确保 MySQL 服务在启动后正常运行:
    sudo systemctl status mysql
    ps -ef | grep mysql
    
  8. 设置 MySQL 开机自启

    • 如果您希望 MySQL 在系统启动时自动启动,可以使用以下命令:
    sudo systemctl enable mysql
    

运行安全配置脚本

sudo mysql_secure_installation

修改用户名和密码

  1. 查看mysql自动设置的随机账号与密码

    MySQL安装后,会为用户自动设置一个随机的账号和密码,所以我们需要先查看账号与密码。

    sudo cat /etc/mysql/debian.cnf
    

    # Automatically generated for Debian scripts. DO NOT TOUCH!
    [client]
    host     = localhost
    user     = debian-sys-maint
    password = f9pXLcJcv5kEY5LK
    socket   = /var/run/mysqld/mysqld.sock
    [mysql_upgrade]
    host     = localhost
    user     = debian-sys-maint
    password = f9pXLcJcv5kEY5LK
    socket   = /var/run/mysqld/mysqld.sock
    
  2. 用默认账号密码登录mysql

    sudo mysql -udebian-sys-maint -p
    

    sudo ls -l /var/run/mysqld/
    
    • 查看 /var/run/mysqld/ 目录及 mysqld.sock 文件的权限:

  3. 找到账号密码有关的数据库

    show databases;   # 查看数据库
    use mysql;   # 选择mysql数据库名
    
  4. 密码强度查询

    SHOW VARIABLES LIKE 'validate_password%';
    

    • 修改密码策略为更宽松的级别

      SET GLOBAL validate_password.policy = LOW;
      
    • 设置密码长度的最低要求

      SET GLOBAL validate_password.length = 6;
      
  5. 更改用户名和密码

    # 将字段置为空
    update user set authentication_string='' where user='root';  
    
    # 修改密码
    alter user 'root'@'localhost' identified with mysql_native_password by '123456';   
    # xxxxxx需设置自己的密码
    
    # 修改用户名
    update user set user='xxxxx' where user='root';   # xxxxx需填写自己的用户名
    
    • 确认是否更改成功

      SELECT user, host, authentication_string FROM mysql.user WHERE user='root';
      

  6. 重新加载权限表

    手动修改了 mysql 数据库中的权限表(如 user、db 等),需要执行以下命令。

    flush privileges;
    
  7. 退出MySQL

    quit;
    
  8. 以新账户密码登录mysql

    mysql -u root -p
    
  1. 配置 MySQL 的网络访问

    确保 MySQL 配置允许从远程地址连接。打开 MySQL 配置文件(通常是 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf),并检查 bind-address 设置:

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    

  2. 修改mysqld.cnf配置

    bind-address = 127.0.0.1 -> 0.0.0.0

  3. 执行后需重启 MySQL 服务:

    sudo systemctl restart mysql
    
  4. 确保防火墙规则允许 MySQL 端口

    如果正在使用 UFW 作为防火墙工具,需要确保 3306 端口(MySQL 默认端口)是打开的:

    sudo ufw allow 3306
    
  5. 添加权限

    UPDATE mysql.user SET host='%' WHERE user='root' AND host='localhost';  
    FLUSH PRIVILEGES;
    
  6. 配置连接