下面以 CentOS 8/9 和 Ubuntu 20.04/22.04 为例,给出在云服务器上安装 MySQL(官方社区版)的完整步骤。你可以根据自己使用的发行版选择对应部分。
一、通用准备
-
确认系统版本与架构
cat /etc/os-release uname -m -
更新软件包列表
- CentOS:
sudo dnf update -y # 或旧版 yum sudo yum update -y - Ubuntu:
sudo apt update && sudo apt upgrade -y
- CentOS:
-
开放必要端口(云安全组)
- MySQL 默认端口:3306
- 在云控制台的安全组/防火墙中放行 TCP 3306(仅允许可信 IP,生产环境建议限制来源)。
二、CentOS 安装 MySQL
方式 A:使用官方 YUM 仓库(推荐)
1. 下载并安装 MySQL YUM 仓库
访问:https://dev.mysql.com/downloads/repo/yum/
根据系统版本选择对应的 .rpm,例如 CentOS 8/9 可能用 mysql80-community-release-el9.x86_64.rpm。
# 示例(请替换为实际 URL)
sudo dnf install -y https://repo.mysql.com/mysql80-community-release-el9.x86_64.rpm
如果不确定版本,可以查看
/etc/os-release中的ID和VERSION_ID,再在官网选择对应发行版。
2. 安装 MySQL Server
sudo dnf install -y mysql-server
若只想装客户端,可安装
mysql包;服务器需要mysql-server。
3. 启动并设置开机自启
sudo systemctl enable --now mysqld
4. 获取临时 root 密码
MySQL 首次安装会生成一个临时密码,记录在日志中:
sudo grep 'temporary password' /var/log/mysqld.log
输出类似:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Abcdefghijklmnop123!
记下该密码,后面用于登录。
5. 初始化安全配置
sudo mysql_secure_installation
按提示操作:
- 输入临时密码
- 设置新 root 密码(满足复杂度要求)
- 删除匿名用户
- 禁止 root 远程登录(可选,但生产建议)
- 删除测试数据库
- 重载权限表
6. 验证安装
mysql -u root -p
输入刚设置的密码,进入 MySQL 后执行:
SHOW DATABASES;
EXIT;
7. 配置远程访问(可选)
如需从外部连接,需:
- 修改
my.cnf配置文件(通常在/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf):[mysqld] bind-address = 0.0.0.0 - 创建允许远程登录的用户(注意不要直接用 root 远程):
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'%'; FLUSH PRIVILEGES; - 重启 MySQL:
sudo systemctl restart mysqld - 确保云安全组已放行 3306,且源 IP 可信。
三、Ubuntu 安装 MySQL
方式 A:使用官方 APT 仓库(推荐)
1. 下载并添加 MySQL APT 仓库
访问:https://dev.mysql.com/downloads/repo/apt/
选择对应 Ubuntu 版本(如 ubuntu22),下载 .deb 文件。
wget https://repo.mysql.com/mysql-apt-config_0.8.x-1_all.deb
# 版本号 x 根据你的页面显示调整
sudo dpkg -i mysql-apt-config_0.8.x-1_all.deb
在安装过程中会弹出交互式界面,让你选择 MySQL 版本(通常选默认即可)。
2. 更新 APT 缓存
sudo apt update
3. 安装 MySQL Server
sudo apt install -y mysql-server
4. 启动并设置开机自启
sudo systemctl enable --now mysql
5. 获取初始 root 密码
Ubuntu 默认使用 Unix socket 认证,root 可以通过 sudo mysql 直接登录,无需密码:
sudo mysql
进入后:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewStrongPassword123!';
FLUSH PRIVILEGES;
EXIT;
如果你希望使用
mysql -u root -p方式登录,就需要上面这一步将插件改为mysql_native_password。
6. 运行安全脚本(可选但推荐)
sudo mysql_secure_installation
按提示设置:
- 设置 root 密码(如果之前没改过)
- 删除匿名用户
- 禁止 root 远程登录
- 删除测试库
- 重载权限表
7. 验证安装
mysql -u root -p
输入密码后执行:
SHOW DATABASES;
EXIT;
8. 配置远程访问(可选)
-
编辑配置文件(不同路径视版本而定):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf找到
[mysqld]部分,修改或取消注释:bind-address = 0.0.0.0 -
创建远程用户(避免直接用 root):
CREATE USER 'app_user'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'%'; FLUSH PRIVILEGES; EXIT; -
重启 MySQL:
sudo systemctl restart mysql -
确保云安全组已放行 3306。
四、常见问题排查
-
无法连接 3306
- 检查云安全组是否放行 TCP 3306
- 检查
bind-address是否为0.0.0.0或你的公网 IP - 检查防火墙:
- CentOS:
firewall-cmd --list-all - Ubuntu:
ufw status或iptables -L
- CentOS:
-
忘记 root 密码
- 停止 MySQL
- 以
--skip-grant-tables模式启动 - 修改密码后正常重启
- 具体步骤可搜索 “MySQL 忘记密码重置”。
-
中文乱码 / 字符集问题
-
在配置文件中设置:
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci -
然后重启 MySQL。
-
如果你告诉我:
- 具体操作系统及版本(如 Ubuntu 22.04 LTS)
- 是否需要远程访问
- 是否有特殊字符集需求
我可以给出一份针对你环境的精简命令清单(可直接复制粘贴执行)。
云计算导航