一、安装Mysql
在 Ubuntu 上安装 MySQL 可以通过apt命令完成。
1、更新系统包列表
sudo apt update
2、安装 MySQL Server
sudo apt install mysql-server
3、验证 MySQL 服务状态
确认 MySQL 服务是否正常运行:
sudo systemctl status mysql
如果服务未启动,可以手动启动:
sudo systemctl start mysql
设置服务开机自启:
sudo systemctl enable mysql
4、安全配置 MySQL
使用安全配置向导加固数据库环境:
sudo mysql_secure_installation
建议的配置选项如下:
-
设置
root
密码(如果之前未设置) -
移除匿名用户
-
禁止
root
远程登录(根据需求选择) -
删除测试数据库
-
重新加载权限表
二、MySQL基本配置
1、MySQL修改密码
从 MySQL 5.7.6 开始,推荐使用 ALTER USER
语句来修改密码。
mysql -u root -p
输入 root 用户的密码。
注意:在 MySQL 5.7 及更高版本中,root
用户可能配置为使用 auth_socket
认证方式。这种情况下,如果你以 root
用户登录系统,你可以无需密码直接登录 MySQL。你可以通过以下命令检查当前的认证方式:
SELECT user, host, plugin FROM mysql.user WHERE user = 'root';
如果 plugin
列显示为 auth_socket
,则表示 root
用户使用的是 auth_socket
认证方式。
如果你希望 root
用户使用密码认证,可以将其认证方式改为 mysql_native_password
:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; FLUSH PRIVILEGES;
这将强制 root
用户在登录时输入密码。
MySQL 8 的密码规则由
下面给出当前版本(MySQL 8.0/8.4)生效的核心参数与典型值,全部可在运行时通过
validate_password
插件统一控制,默认已启用。下面给出当前版本(MySQL 8.0/8.4)生效的核心参数与典型值,全部可在运行时通过
SHOW VARIABLES LIKE 'validate_password%';
查看。参数 | 说明 | 默认值/范围 | 备注 |
---|---|---|---|
validate_password.policy |
强度等级 | MEDIUM(1) | 可选 LOW(0)、MEDIUM(1)、STRONG(2) |
validate_password.length |
最小长度 | 8 字符 | 8.0 起允许 1-12 字符
|
validate_password.mixed_case_count |
至少大小写字母 | 1 | MEDIUM 及以上生效 |
validate_password.number_count |
至少数字 | 1 | MEDIUM 及以上生效 |
validate_password.special_char_count |
至少特殊字符 | 1 | MEDIUM 及以上生效 |
validate_password.check_user_name |
是否允许与用户名相同 | ON | 建议保持 ON |
示例:把策略改成“强”且最小长度 12
SET GLOBAL validate_password.policy = STRONG; -- 2 SET GLOBAL validate_password.length = 12; -- 1-12 之间 [^31^]
创建用户时密码必须同时满足:
-
长度 ≥ 12
-
包含大小写字母、数字、特殊字符
-
不能是常见弱口令(STRONG 级别会调用内置字典过滤)
注意:从 MySQL 8.4 开始,若使用传统mysql_native_password
插件,需先在配置里加mysql_native_password=ON
并重启实例,否则会被禁用。
2、常见MySQL 服务命令
查看 MySQL 服务状态
sudo systemctl status mysql
启动 MySQL 服务
sudo systemctl start mysql
停止 MySQL 服务
sudo systemctl stop mysql
重启 MySQL 服务
sudo systemctl restart mysql
重新加载 MySQL 服务配置
sudo systemctl reload mysql
设置 MySQL 服务开机自启
sudo systemctl enable mysql
禁用 MySQL 服务开机自启
sudo systemctl disable mysql
三、修改MySQL的存储路径
1、查看当前的存储路径
需要先登录进MySQL。
show variables like 'datadir';
2、停止MySQL服务
sudo systemctl stop mysql
为了避免数据不一致,需要提前停止数据库服务。
3、创建新存储路径并且赋权
例如我需要将MySQL数据存储路径更改为/data/mysql下。
mkdir -p /data/mysql
cp -R /var/lib/mysql/* /data/mysql
chmod -R 777 /data
chown -R mysql:mysql /data/mysql
注意以上文件需要赋权给mysql
4、修改配置文件 mysqld.cnf
vim /etc/mysql/mysql.conf.d/mysqld.cnf
datadir = /data/mysql
5、修改安全保护文件
vim /etc/apparmor.d/usr.sbin.mysqld
/data/mysql/ r,
/data/mysql/** rwk,
6、重新加载策略并恢复强制模式
apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
aa-enforce /usr/sbin/mysqld
7、修改mysql访问控制文件
vim /etc/apparmor.d/abstractions/mysql
/data/mysql{,d}/mysql{,d}.sock rw,
8、重启服务并查看运行状态
service mysql restart
systemctl status mysql