【Linux】Mysql的基本文件组成和配置
一、mysql安装的三个文件路径
路径 | 官方用途 | 删除后意味着什么 |
---|---|---|
/data/mysql | 所有数据库文件(表、索引、系统表、Undo/Redo 等) 相当于 Windows 的 C:\ProgramData\MySQL\data | 数据全部消失,且无法恢复(除非有备份) |
/etc/mysql | 配置文件 总目录 包含 my.cnf 、*conf.d/*.cnf 、SSL 证书、debian-start 脚本等 | 删除后 MySQL 会退回编译默认值,端口、字符集、慢查询等设置全部丢失 |
/var/log/mysql* | 错误日志、慢查询日志、通用查询日志、二进制日志 例如 error.log 、slow.log 、binlog.* | 删除后无法追溯历史故障、无法 point-in-time 恢复(若无远程 binlog 备份) |
一句话总结
/data/mysql
= 数据命根子/etc/mysql
= 配置命根子/var/log/mysql*
= 日志命根子
生产环境请务必先 全量备份 再执行 rm -rf
。
二、开始配置mysql
# MySQL 二进制压缩包手动安装流程(Linux 通用)> 适用于官方 `.tar.gz` 解压版,无需 rpm/apt,全步骤可复制粘贴。
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
1. 解压安装包
sudo tar -zxvf /path/to/mysql-<version>-linux-glibc2.12-<arch>.tar.gz -C /usr/local
解压后得到目录 /usr/local/mysql-<version>
(下文用 /usr/local/mysql
指代,可建软链接方便升级)
2. 创建系统用户/组
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
-s /bin/false
禁止系统登录,仅用于跑服务
3. 目录权限
sudo chown -R mysql:mysql /usr/local/mysql-<version>
sudo chmod 750 /usr/local/mysql-<version>
4. 初始化数据目录
sudo /usr/local/mysql/bin/mysqld \--initialize --user=mysql \--basedir=/usr/local/mysql \--datadir=/data/mysql
- 控制台会打印 临时 root 密码,务必记录
- 若目录已存在且非空,请加
--initialize-insecure
强制空库
5. 配置环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' | sudo tee -a /etc/profile
source /etc/profile
也可写入
~/.bashrc
或/etc/bash.bashrc
6. 启动服务
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
ps -ef | grep mysql # 验证是否存活
首次启动建议在前台观察日志:tail -f /usr/local/mysql/data/mysql.err
7. 修改 root 密码
mysql -u root -p # 输入临时密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
8. 安全加固
sudo /usr/local/mysql/bin/mysql_secure_installation
按提示完成:
✓ 设置 root 密码强度
✓ 移除匿名用户
✓ 禁止 root 远程登录
✓ 删除 test 库
✓ 重载权限表
9. 常用后续操作(可选)
任务 | 命令示例 |
---|---|
注册系统服务 | 见 support-files/mysql.server 或手动写 systemd 单元 |
开机自启 | systemctl enable mysql |
备份 | mysqldump -uroot -p --single-transaction --routines --triggers --events db1 | gzip > db1_$(date +%F).sql.gz |
忘记密码 | 停库 → mysqld_safe --skip-grant-tables --skip-networking & → ALTER USER ... |
多实例 | 复制 my.cnf ,改 port/datadir/socket ,再启动一份 mysqld_safe |
10. 目录结构速记
/usr/local/mysql/
├── bin # 客户端/服务端可执行文件
├── lib # 动态库
├── share # 错误消息文件、字符集
├── support-files # 示例配置与服务脚本
└── data # 初始化后生成的库文件(需 chown mysql:mysql)
完成以上 8 步即可得到一套干净、可生产使用的 MySQL 8.x 实例。