概述
本文档详细介绍了在腾讯云OpenCloudOS 9.4服务器上安装、配置MySQL数据库环境的完整步骤,包括安全设置、用户创建和NestJS应用连接配置。
系统要求
- OpenCloudOS 9.4
- sudo权限用户
- 互联网连接
安装步骤
1. 安装MySQL服务器
bash
# 添加MySQL官方Yum仓库
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el9-4.noarch.rpm
# 安装MySQL服务器
sudo yum install -y mysql-community-server
# 启动MySQL服务
sudo systemctl start mysqld
# 设置开机自启
sudo systemctl enable mysqld
# 检查服务状态
sudo systemctl status mysqld
2. 获取初始root密码
bash
# 查看初始root密码
sudo grep 'temporary password' /var/log/mysqld.log
输出示例:A temporary password is generated for root@localhost: [临时密码]
3. 安全配置MySQL
bash
# 运行安全配置脚本
sudo mysql_secure_installation
按照提示完成以下安全设置:
- 输入临时root密码
- 设置新root密码(建议使用强密码)
- 移除匿名用户 (按 y)
- 禁止远程root登录 (按 y)
- 移除测试数据库 (按 y)
- 重新加载权限表 (按 y)
上面可能手输不太方便,可以使用后
sudo mysql -u root -p'[临时密码]'
进入数据库后去修改新的root密码
# 立即修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'New Password';
# 刷新
FLUSH PRIVILEGES;
# 退出
EXIT;
然后利用这个新的密码去执行上面的安全配置脚本
4. 创建应用数据库和用户
bash
# 使用root登录MySQL
mysql -u root -p
执行以下SQL命令:
sql
-- 创建数据库
CREATE DATABASE easy_admin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建本地用户
CREATE USER 'admin'@'localhost' IDENTIFIED BY '[Password]';
-- 创建远程用户
CREATE USER 'admin'@'%' IDENTIFIED BY '[Password]';
-- 授予权限
GRANT ALL PRIVILEGES ON easy_admin.* TO 'admin'@'localhost';
GRANT ALL PRIVILEGES ON easy_admin.* TO 'admin'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出MySQL
EXIT;
5. 配置MySQL远程访问[可选]
bash
# 编辑MySQL配置文件
sudo vi /etc/my.cnf.d/mysql-server.cnf
在 [mysqld] 部分添加:
text
bind-address = 0.0.0.0
6. 配置防火墙
bash
# 开放3306端口
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
# 验证端口开放
sudo firewall-cmd --list-ports
7. 重启MySQL服务
bash
sudo systemctl restart mysqld
sudo systemctl status mysqld
测试验证
1. 测试本地连接
bash
mysql -u admin -p -h 127.0.0.1 -D easy_admin
2. 测试远程连接
bash
mysql -u admin -p -h [服务器IP] -D easy_admin
3. 验证NestJS配置
确保NestJS配置文件中的数据库连接信息正确:
typescript
export const SQLCONF: TypeOrmModuleOptions = {
type: 'mysql',
retryAttempts: 1,
host: '服务器IP', // 您的服务器IP
port: 3306,
username: 'xxx', // 注意:用户名小写
password: 'Password',
database: 'xxx',
synchronize: true,
autoLoadEntities: true
}
故障排除
常见问题及解决方案
-
连接被拒绝错误
bash
# 检查MySQL服务状态 sudo systemctl status mysqld # 检查错误日志 sudo tail -f /var/log/mysqld.log -
防火墙问题
bash
# 检查防火墙设置 sudo firewall-cmd --list-all # 临时关闭防火墙测试(仅用于调试) sudo systemctl stop firewalld -
权限问题
bash
# 检查用户权限 mysql -u root -p -e "SHOW GRANTS FOR 'admin'@'%'"
安全建议
-
定期备份数据库
bash
# 使用mysqldump备份 mysqldump -u root -p easy_admin > backup_$(date +%Y%m%d).sql -
监控MySQL日志
bash
# 查看实时日志 sudo tail -f /var/log/mysqld.log -
定期更新MySQL
bash
# 检查更新 sudo yum check-update mysql-community-server # 应用更新 sudo yum update mysql-community-server
维护命令
bash
# 查看MySQL版本
mysql --version
# 查看运行状态
sudo systemctl status mysqld
# 停止MySQL
sudo systemctl stop mysqld
# 启动MySQL
sudo systemctl start mysqld
# 重启MySQL
sudo systemctl restart mysqld
总结
按照本文档步骤,您已在OpenCloudOS 9.4服务器上成功安装了MySQL数据库环境,并配置了安全的远程访问权限。您的NestJS应用现在可以使用配置的用户名和密码连接到数据库。