在云服务器上手动安装和配置MySQL数据库的详细步骤如下(以Ubuntu系统为例,其他Linux发行版类似):
1. 系统准备
更新系统包
sudo apt update
sudo apt upgrade -y
安装必要的工具
sudo apt install -y wget curl gnupg2 software-properties-common
2. 安装MySQL
添加MySQL官方GPG密钥
wget https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo gpg --dearmor < RPM-GPG-KEY-mysql-2022 > mysql.gpg
sudo mv mysql.gpg /etc/apt/trusted.gpg.d/mysql.gpg
添加MySQL APT仓库
echo "deb http://repo.mysql.com/apt/ubuntu/ $(lsb_release -cs) mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql.list
安装MySQL服务器
sudo apt update
sudo apt install -y mysql-server
3. 启动并启用MySQL服务
# 启动MySQL服务
sudo systemctl start mysql
# 设置开机自启
sudo systemctl enable mysql
# 检查服务状态
sudo systemctl status mysql
4. 安全初始化配置
sudo mysql_secure_installation
按照提示进行以下设置:
- 设置root用户密码
- 移除匿名用户
- 禁止root远程登录
- 移除test数据库
- 重新加载权限表
5. 配置MySQL
编辑MySQL配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
常用配置修改
[mysqld]
# 绑定地址(允许远程连接)
bind-address = 0.0.0.0
# 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 最大连接数
max_connections = 200
# 内存相关设置
innodb_buffer_pool_size = 1G
key_buffer_size = 256M
# 日志设置
log_error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
重启MySQL服务
sudo systemctl restart mysql
6. 用户和权限管理
登录MySQL
sudo mysql -u root -p
创建新用户
-- 创建新用户
CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_password';
-- 授予所有权限(生产环境建议使用更精细的权限)
GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
创建特定数据库
-- 创建数据库
CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 为特定数据库授予权限
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'%';
FLUSH PRIVILEGES;
7. 防火墙配置
开放MySQL端口
# Ubuntu默认防火墙
sudo ufw allow 3306/tcp
# 或者使用iptables
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
云服务商安全组配置
在云控制台中:
- 找到安全组设置
- 添加入站规则:端口3306,协议TCP
- 源IP可根据需要设置为特定IP或0.0.0.0/0
8. 远程连接测试
从本地测试连接
mysql -h 你的云服务器IP -P 3306 -u your_username -p
使用客户端工具连接
- MySQL Workbench
- Navicat
- DBeaver等
9. 备份与恢复
创建备份脚本
#!/bin/bash
# backup_mysql.sh
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
DATABASE="your_database_name"
mkdir -p $BACKUP_DIR
mysqldump -u root -p$MYSQL_ROOT_PASSWORD $DATABASE | gzip > "$BACKUP_DIR/$DATABASE-$DATE.sql.gz"
# 保留最近7天的备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
设置定时备份
crontab -e
# 添加每天凌晨2点备份
0 2 * * * /path/to/backup_mysql.sh
10. 性能优化建议
监控命令
# 查看MySQL进程
ps aux | grep mysql
# 查看连接数
mysql -u root -p -e "SHOW STATUS LIKE 'Threads_connected';"
# 查看慢查询
mysql -u root -p -e "SHOW VARIABLES LIKE 'slow_query%';"
优化参数(根据服务器配置调整)
[mysqld]
# 内存分配(建议为物理内存的50-70%)
innodb_buffer_pool_size = 2G
# 临时表大小
tmp_table_size = 256M
max_heap_table_size = 256M
# 查询缓存(MySQL 8.0已移除)
query_cache_type = 0
故障排除
常见问题解决
# 检查错误日志
sudo tail -f /var/log/mysql/error.log
# 重置root密码
sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
mysql -u root
-- 在MySQL中执行:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
sudo killall mysqld
sudo systemctl start mysql
安全最佳实践
- 定期更新:保持MySQL版本最新
- 强密码策略:使用复杂密码
- 最小权限原则:按需分配权限
- 定期备份:确保数据安全
- 监控日志:及时发现异常
- SSL连接:启用加密连接
这样就完成了MySQL在云服务器上的完整安装和配置。记得根据实际需求调整各项参数。
轻量云Cloud