在云服务器上手动安装和配置 MySQL 数据库,通常分为以下几个关键步骤(以 Ubuntu/Debian 为例,CentOS/RHEL 类似):
一、更新系统并安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg2 lsb-release ca-certificates
✅ 建议先确保服务器防火墙已开放 3306 端口(MySQL 默认端口),否则远程无法连接。
二、添加 MySQL 官方 APT 仓库(推荐方式)
1. 下载 MySQL 官方 GPG 密钥与仓库源
访问 https://dev.mysql.com/downloads/repo/apt/
选择对应版本(如 mysql-8.0),复制下载命令:
# 示例:MySQL 8.0(请根据实际需求替换版本号)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
# 按提示选择 MySQL 版本(如 8.0),确认即可
⚠️ 若不想交互,可提前设置默认版本:
echo "mysql-apt-config select server-version string mysql-8.0" | sudo debconf-set-selections sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
2. 更新包索引并安装 MySQL Server
sudo apt update
sudo apt install -y mysql-server
安装过程中会提示设置 root 密码(强烈建议设置强密码)。
三、基础安全配置(必须执行!)
MySQL 安装后自带 mysql_secure_installation 脚本,用于加固安全:
sudo mysql_secure_installation
按提示操作:
- 输入当前 root 密码(刚设置的)
- 是否切换为
auth_socket?→ 选Y(更安全可靠) - 删除匿名用户?→
Y - 禁止 root 远程登录?→
Y - 删除测试数据库?→
Y - 重新加载权限表?→
Y
🔐 若需允许远程连接,后续需单独配置(见第五步)。
四、验证安装状态
# 检查服务状态
sudo systemctl status mysql
# 查看版本
mysql --version
# 登录 MySQL(使用 socket 认证时可直接 sudo mysql)
sudo mysql
在 MySQL 命令行中:
SHOW DATABASES;
EXIT;
五、(可选)允许远程连接
方法一:修改绑定地址 + 创建远程用户
-
编辑 MySQL 配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # 或 /etc/my.cnf(取决于发行版)找到并修改:
bind-address = 0.0.0.0 # 默认是 127.0.0.1,改为 0.0.0.0 允许所有 IP -
重启 MySQL:
sudo systemctl restart mysql -
登录 MySQL 创建远程用户(注意安全风险!):
CREATE USER 'your_user'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT; -
重要:确保云服务器安全组/防火墙放行 3306 端口(TCP),例如:
- AWS Security Group:添加入站规则 TCP 3306
- 阿里云/腾讯云控制台 → 安全组 → 添加入方向规则
❗ 生产环境建议使用特定 IP 限制访问(如
'user'@'1.2.3.4'),而非%;并启用 SSL 加密连接。
六、备份与监控建议
- 定期备份:
mysqldump -u root -p your_db > backup.sql - 启用慢查询日志(优化性能):
在[mysqld]段添加:slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2
常见问题排查
| 问题 | 解决方法 |
|---|---|
Can't connect to MySQL server |
检查 systemctl status mysql、防火墙、安全组、bind-address |
| 忘记 root 密码 | 跳过授权表启动:sudo systemctl stop mysql → sudo mysqld_safe --skip-grant-tables & → 重置密码 |
| 中文乱码 | 修改 /etc/mysql/mysql.conf.d/mysqld.cnf 添加:character-set-server = utf8mb4collation-server = utf8mb4_unicode_ci |
需要我提供 CentOS 7/8 的安装脚本、Docker 部署方案,或自动化 Ansible playbook 吗?
云服务器