部署MySQL数据库
约 589 字大约 2 分钟
2026-08-29
本文介绍在 Linux 云服务器上安装 MySQL(或兼容的 MariaDB)、完成安全初始化、创建业务库与账号,以及备份方法。
开始前
已远程连接 Linux 实例。数据库属内存敏感型服务,建议实例内存 2GB 起,并只在安全组中对可信来源放行 3306。
安装
sudo apt update && sudo apt install mysql-server -y
sudo systemctl enable --now mysql基础仓库默认提供 MariaDB(与 MySQL 用法兼容):
sudo dnf install mariadb-server -y
sudo systemctl enable --now mariadb需要 MySQL 官方版本时,先安装 MySQL 官方仓库再 dnf install mysql-community-server。
安全初始化
sudo mysql_secure_installation按提示设置 root 密码、移除匿名用户、禁止 root 远程登录、删除测试库。全部选 Y 即可。
创建业务库与账号
sudo mysql -u root -pCREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;关于远程访问
默认配置下 MySQL 只监听本机(127.0.0.1),这是最安全的状态。确实需要远程连接时:把用户创建为 'myuser'@'%'、修改 bind-address = 0.0.0.0,并在安全组中将 3306 限制为指定来源 IP——绝不建议对全网开放数据库端口。
备份与恢复
# 备份单个库
mysqldump -u myuser -p'密码' mydb | gzip > mydb_$(date +%Y%m%d).sql.gz
# 恢复
gunzip < mydb_20260829.sql.gz | mysql -u myuser -p'密码' mydb配合 Cron 定时任务可实现每日自动备份;用 df -h 关注备份占用的磁盘空间(见Linux资源查看基础命令)。
常见问题
ERROR 1698 / root 无法用密码登录?
Ubuntu 的 root 默认使用系统认证(auth_socket),需 sudo mysql 进入。业务账号请按上文第三步单独创建,不要直接用 root 跑应用。
ERROR 2002 Can't connect through socket?
数据库服务未启动:systemctl status mysql(或 mariadb)查看并启动。
远程连接报 1130 / Host is not allowed?
账号的主机部分不是 % 或未包含来源 IP:重新执行 GRANT 创建 'myuser'@'%' 并 FLUSH PRIVILEGES。
忘记 root 密码?
通过进入Linux单用户模式获得 shell 后,用 mysqld_safe --skip-grant-tables & 启动并执行 ALTER USER 重置,完成后正常重启数据库。
