MySQL 数据库管理与字符集配置教程
简介
本教程详细介绍 MySQL 数据库的创建、导入、字符集配置以及用户权限管理等操作。适用于游戏服务器数据库部署、字符集转换、多数据库环境管理等场景。
数据库创建与导入
游戏服务器数据库创建
绿装版本数据库
-- 创建基础数据库
CREATE DATABASE FLServer;
CREATE DATABASE GMTool;
CREATE DATABASE LoginServer;
CREATE DATABASE roleChangeServer;
CREATE DATABASE roleregServer;
CREATE DATABASE unify00;
CREATE DATABASE zt;
CREATE DATABASE zt1;
紫装版本数据库
-- 创建扩展数据库
CREATE DATABASE BillServer;
CREATE DATABASE FLServerDB1;
CREATE DATABASE ZtGameDB1;
CREATE DATABASE LoginServerDB;
CREATE DATABASE MiniServer;
CREATE DATABASE RecordServer;
CREATE DATABASE SessionServer;
CREATE DATABASE SuperServer;
CREATE DATABASE ZhuLuGameDB;
数据库导入操作
使用 latin1 字符集导入(绿装版本)
# 基础数据库导入
mysql -u ztgame -p123456 --default-character-set=latin1 FLServer < FLServer.sql
mysql -u ztgame -p123456 --default-character-set=latin1 GMTool < GMTool.sql
mysql -u ztgame -p123456 --default-character-set=latin1 LoginServer < LoginServer.sql
mysql -u ztgame -p123456 --default-character-set=latin1 roleChangeServer < roleChangeServer.sql
mysql -u ztgame -p123456 --default-character-set=latin1 roleregServer < roleregServer.sql
mysql -u ztgame -p123456 --default-character-set=latin1 unify00 < unify00.sql
mysql -u ztgame -p123456 --default-character-set=latin1 zt < zt.sql
mysql -u ztgame -p123456 --default-character-set=latin1 zt1 < zt1.sql
使用 gbk 字符集导入(紫装版本)
# 基础数据库
mysql -u ztgame -p123456 --default-character-set=gbk FLServerDB < FLServerDB.sql
mysql -u ztgame -p123456 --default-character-set=gbk ZtGameDB < ZtGameDB.sql
# 扩展数据库
mysql -u ztgame -p123456 --default-character-set=gbk BillServer < BillServer.sql
mysql -u ztgame -p123456 --default-character-set=gbk FLServer < FLServer.sql
mysql -u ztgame -p123456 --default-character-set=gbk InfoServer < InfoServer.sql
mysql -u ztgame -p123456 --default-character-set=gbk LoginServerDB < LoginServerDB.sql
mysql -u ztgame -p123456 --default-character-set=gbk MiniServer < MiniServer.sql
mysql -u ztgame -p123456 --default-character-set=gbk RecordServer < RecordServer.sql
mysql -u ztgame -p123456 --default-character-set=gbk SessionServer < SessionServer.sql
mysql -u ztgame -p123456 --default-character-set=gbk SuperServer < SuperServer.sql
mysql -u ztgame -p123456 --default-character-set=gbk ZhuLuGameDB < ZhuLuGameDB.sql
# 数据库副本
mysql -u ztgame -p123456 --default-character-set=gbk FLServerDB1 < FLServerDB1.sql
mysql -u ztgame -p123456 --default-character-set=gbk ZtGameDB1 < ZtGameDB1.sql
服务器配置管理
修改服务器 IP 地址
更新服务器列表配置
-- 更新 SERVERLIST 表中的服务器地址
UPDATE SERVERLIST SET ip='127.0.0.1', extip='127.0.0.1';
批量更新多个服务器配置
-- 更新特定服务器的配置
UPDATE SERVERLIST SET ip='192.168.1.100', extip='203.0.113.50' WHERE server_id = 1;
-- 更新所有服务器的内网地址
UPDATE SERVERLIST SET ip='192.168.1.100';
-- 更新所有服务器的外网地址
UPDATE SERVERLIST SET extip='203.0.113.50';
用户权限管理
创建数据库用户并授权
创建新用户并授予权限
-- 创建用户 danwang 并设置密码
CREATE USER 'danwang'@'localhost' IDENTIFIED BY 'DANwang5200**';
CREATE USER 'danwang'@'127.0.0.1' IDENTIFIED BY 'DANwang5200**';
CREATE USER 'danwang'@'%' IDENTIFIED BY 'DANwang5200**';
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'danwang'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'danwang'@'127.0.0.1';
GRANT ALL PRIVILEGES ON *.* TO 'danwang'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
用户密码修改方法
方法一:ALTER USER 语句(MySQL 5.7.6+)
-- 修改当前用户密码
ALTER USER USER() IDENTIFIED BY 'MyNewPass123';
-- 修改指定用户密码
ALTER USER 'ztgame'@'localhost' IDENTIFIED BY 'NewPassword456';
方法二:SET PASSWORD 语句(MySQL 5.7及以下)
-- 修改当前用户密码
SET PASSWORD = PASSWORD('MyNewPass789');
-- 修改指定用户密码
SET PASSWORD FOR 'ztgame'@'localhost' = PASSWORD('AnotherNewPass');
方法三:直接更新系统表(不推荐)
-- 更新用户密码
UPDATE mysql.user
SET authentication_string = PASSWORD('NewPassword123')
WHERE User = 'ztgame' AND Host = 'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
数据库操作实用命令
数据库切换
-- 切换到指定数据库
USE FLServer;
USE ZtGameDB;
USE LoginServer;
查看数据库信息
-- 查看所有数据库
SHOW DATABASES;
-- 查看当前数据库
SELECT DATABASE();
-- 查看数据库字符集
SHOW CREATE DATABASE FLServer;
查看表结构
-- 查看所有表
SHOW TABLES;
-- 查看表结构
DESC SERVERLIST;
SHOW CREATE TABLE SERVERLIST;
字符集配置详解
字符集参数说明
--default-character-set 参数
- latin1: 单字节字符集,适用于早期版本
- gbk: 中文双字节字符集,支持简体中文
- utf8/utf8mb4: 国际通用字符集,支持多语言
字符集转换策略
从 latin1 转换为 gbk
# 导出 latin1 数据
mysqldump -u ztgame -p123456 --default-character-set=latin1 FLServer > FLServer_latin1.sql
# 创建 gbk 数据库
mysql -u ztgame -p123456 -e "CREATE DATABASE FLServer_gbk CHARACTER SET gbk"
# 导入到 gbk 数据库
mysql -u ztgame -p123456 --default-character-set=gbk FLServer_gbk < FLServer_latin1.sql
检查字符集兼容性
-- 检查数据库字符集
SELECT
SCHEMA_NAME,
DEFAULT_CHARACTER_SET_NAME,
DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'FLServer';
-- 检查表字符集
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_COLLATION
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'FLServer';
最佳实践与注意事项
安全配置
- 密码安全: 使用强密码,避免使用默认密码
- 权限最小化: 按需授予权限,避免使用 ALL PRIVILEGES
- 网络访问控制: 限制数据库访问IP范围
备份策略
# 定期备份数据库
mysqldump -u ztgame -p123456 --default-character-set=latin1 FLServer > FLServer_backup_$(date +%Y%m%d).sql
mysqldump -u ztgame -p123456 --default-character-set=gbk ZtGameDB > ZtGameDB_backup_$(date +%Y%m%d).sql
故障排查
- 连接问题: 检查防火墙、网络连通性
- 字符集乱码: 确认导入导出字符集一致
- 权限错误: 验证用户权限和主机限制
扩展功能
批量操作脚本
创建自动化部署脚本:
#!/bin/bash
# deploy-databases.sh
USER="ztgame"
PASSWORD="123456"
# 创建数据库
mysql -u $USER -p$PASSWORD -e "CREATE DATABASE IF NOT EXISTS FLServer"
mysql -u $USER -p$PASSWORD -e "CREATE DATABASE IF NOT EXISTS ZtGameDB"
# 导入数据
mysql -u $USER -p$PASSWORD --default-character-set=latin1 FLServer < FLServer.sql
mysql -u $USER -p$PASSWORD --default-character-set=gbk ZtGameDB < ZtGameDB.sql
echo "数据库部署完成"
监控与维护
-- 查看数据库状态
SHOW STATUS LIKE 'Uptime';
SHOW PROCESSLIST;
-- 查看连接数
SHOW STATUS LIKE 'Threads_connected';
总结
本教程涵盖了 MySQL 数据库管理的核心操作,包括:
- 数据库创建与导入
- 字符集配置与转换
- 用户权限管理
- 服务器配置更新
- 实用操作命令
通过合理的字符集配置和权限管理,可以确保游戏服务器数据库的稳定运行和数据安全。