跳到主要内容

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';

最佳实践与注意事项

安全配置

  1. 密码安全: 使用强密码,避免使用默认密码
  2. 权限最小化: 按需授予权限,避免使用 ALL PRIVILEGES
  3. 网络访问控制: 限制数据库访问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

故障排查

  1. 连接问题: 检查防火墙、网络连通性
  2. 字符集乱码: 确认导入导出字符集一致
  3. 权限错误: 验证用户权限和主机限制

扩展功能

批量操作脚本

创建自动化部署脚本:

#!/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 数据库管理的核心操作,包括:

  • 数据库创建与导入
  • 字符集配置与转换
  • 用户权限管理
  • 服务器配置更新
  • 实用操作命令

通过合理的字符集配置和权限管理,可以确保游戏服务器数据库的稳定运行和数据安全。


扩展阅读