重装MySQL
重装 MySQL 的步骤如下,确保在执行这些步骤之前备份任何重要数据,因为重装过程可能会删除现有的数据库和配置。
重装 MySQL 的步骤
卸载现有的 MySQL:
- 首先,您需要卸载当前安装的 MySQL。使用以下命令:
sudo apt-get remove --purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
- 这将删除 MySQL 服务器、客户端及其所有配置文件。
删除 MySQL 数据目录:
- 卸载后,您可能还需要删除 MySQL 的数据目录,以确保没有残留数据。默认情况下,数据目录位于
/var/lib/mysql
。使用以下命令:
sudo rm -rf /var/lib/mysql
- 如果您使用了自定义数据目录(如
/data/mysql
),请确保也删除该目录。
- 卸载后,您可能还需要删除 MySQL 的数据目录,以确保没有残留数据。默认情况下,数据目录位于
删除 MySQL 配置文件:
- 您还可以删除 MySQL 的配置文件,通常位于
/etc/mysql
:
sudo rm -rf /etc/mysql
- 您还可以删除 MySQL 的配置文件,通常位于
更新包列表:
- 在重新安装之前,更新您的包列表:
sudo apt-get update
重新安装 MySQL:
- 使用以下命令重新安装 MySQL:
sudo apt-get install mysql-server
- 在安装过程中,您可能会被要求设置 MySQL 的 root 密码。
初始化 MySQL 数据目录(如果需要):
- 在某些情况下,您可能需要手动初始化数据目录。可以使用以下命令:
sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql
启动 MySQL 服务:
- 安装完成后,启动 MySQL 服务:
sudo systemctl start mysql
- 确保 MySQL 服务在启动后正常运行:
sudo systemctl status mysql ps -ef | grep mysql
设置 MySQL 开机自启:
- 如果您希望 MySQL 在系统启动时自动启动,可以使用以下命令:
sudo systemctl enable mysql
运行安全配置脚本
sudo mysql_secure_installation
修改用户名和密码
查看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
用默认账号密码登录mysql
sudo mysql -udebian-sys-maint -p
sudo ls -l /var/run/mysqld/
- 查看
/var/run/mysqld/
目录及mysqld.sock
文件的权限:
- 查看
找到账号密码有关的数据库
show databases; # 查看数据库 use mysql; # 选择mysql数据库名
密码强度查询
SHOW VARIABLES LIKE 'validate_password%';
修改密码策略为更宽松的级别
SET GLOBAL validate_password.policy = LOW;
设置密码长度的最低要求
SET GLOBAL validate_password.length = 6;
更改用户名和密码
# 将字段置为空 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';
重新加载权限表
手动修改了 mysql 数据库中的权限表(如 user、db 等),需要执行以下命令。
flush privileges;
退出MySQL
quit;
以新账户密码登录mysql
mysql -u root -p
Navicat Premium连接数据库
配置 MySQL 的网络访问
确保 MySQL 配置允许从远程地址连接。打开 MySQL 配置文件(通常是
/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/my.cnf
),并检查bind-address
设置:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
修改
mysqld.cnf
配置bind-address = 127.0.0.1 -> 0.0.0.0
执行后需重启 MySQL 服务:
sudo systemctl restart mysql
确保防火墙规则允许 MySQL 端口
如果正在使用 UFW 作为防火墙工具,需要确保 3306 端口(MySQL 默认端口)是打开的:
sudo ufw allow 3306
添加权限
UPDATE mysql.user SET host='%' WHERE user='root' AND host='localhost'; FLUSH PRIVILEGES;
配置连接