走啊走
加油

如何在云服务器上手动安装和配置MySQL数据库?

服务器价格表

在云服务器上手动安装和配置MySQL数据库的详细步骤如下(以Ubuntu/Debian系统为例):

1. 系统准备

更新系统包

sudo apt update
sudo apt upgrade -y

安装必要的工具

sudo apt install -y wget curl net-tools

2. 安装MySQL

添加MySQL官方仓库(推荐)

# 下载并添加MySQL APT配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb

安装MySQL服务器

sudo apt update
sudo apt install -y mysql-server

启动并设置开机自启

sudo systemctl start mysql
sudo systemctl enable mysql

3. 初始安全配置

运行安全脚本

sudo mysql_secure_installation

按照提示设置:

  • 设置root密码强度
  • 移除匿名用户
  • 禁止root远程登录
  • 删除测试数据库
  • 重新加载权限表

4. 基本配置

登录MySQL

sudo mysql -u root -p

创建新用户(推荐)

-- 创建新用户
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'your_strong_password';

-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出
EXIT;

5. 配置文件优化

编辑MySQL配置文件

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

常用配置项

[mysqld]
# 基本设置
port = 3306
bind-address = 0.0.0.0  # 允许远程连接

# 内存配置(根据服务器内存调整)
innodb_buffer_pool_size = 1G
key_buffer_size = 256M
max_allowed_packet = 64M
thread_stack = 192K
thread_cache_size = 8

# 连接设置
max_connections = 200
wait_timeout = 28800
interactive_timeout = 28800

# 日志设置
log_error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

重启MySQL服务

sudo systemctl restart mysql

6. 防火墙配置

开放MySQL端口

# 使用ufw防火墙
sudo ufw allow 3306/tcp

# 或使用iptables
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

7. 远程访问配置

修改绑定地址

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address 改为:

bind-address = 0.0.0.0

授予远程访问权限

mysql -u root -p

-- 创建允许远程访问的用户
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

8. 性能优化建议

调整InnoDB设置

[mysqld]
# InnoDB配置
innodb_log_file_size = 256M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

# 查询缓存(MySQL 8.0已移除)
query_cache_type = 1
query_cache_size = 64M

连接池优化

[mysqld]
max_connections = 500
max_connect_errors = 10000
connect_timeout = 10
wait_timeout = 28800
interactive_timeout = 28800

9. 备份与恢复

创建备份脚本

#!/bin/bash
# backup_mysql.sh

BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="your_database"

mkdir -p $BACKUP_DIR

mysqldump -u root -p"your_password" 
  --single-transaction 
  --routines 
  --triggers 
  --events 
  $DB_NAME > $BACKUP_DIR/${DB_NAME}_${DATE}.sql

# 压缩备份
gzip $BACKUP_DIR/${DB_NAME}_${DATE}.sql

# 删除7天前的备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete

设置定时备份

crontab -e
# 每天凌晨2点备份
0 2 * * * /path/to/backup_mysql.sh

10. 监控与维护

查看MySQL状态

# 查看服务状态
sudo systemctl status mysql

# 查看进程
ps aux | grep mysql

# 查看端口监听
netstat -tlnp | grep :3306

日常维护命令

-- 查看数据库大小
SELECT table_schema "Database", 
       SUM(data_length + index_length) / 1024 / 1024 "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;

-- 优化表
OPTIMIZE TABLE your_table_name;

-- 分析表
ANALYZE TABLE your_table_name;

11. 安全加固

修改默认端口(可选)

[mysqld]
port = 3307  # 修改为非标准端口

启用SSL连接

[mysqld]
ssl-ca=/etc/mysql/ca.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

定期更新

sudo apt update
sudo apt upgrade mysql-server

注意事项

  1. 密码安全:使用强密码,定期更换
  2. 权限最小化:按需分配权限,避免过度授权
  3. 定期备份:确保数据安全
  4. 监控资源:关注CPU、内存、磁盘使用情况
  5. 日志管理:定期清理日志文件
  6. 云安全组:配合云服务商的安全组规则

完成以上步骤后,你的MySQL数据库就成功安装并配置好了。建议根据实际业务需求进一步调整配置参数。