当前位置 : 145z游戏站 | 魔力宝贝 | 技术教程 | 

魔力宝贝单机服务器端踢卡死账号与重启MySQL服务操作方法 命令行killuser无效时的进程

热度:
killuser 账号名 只对正常在线连接生效,服务端已异常断开或账号被锁在内存里时命令会失效,需手动处理。

一、先确认服务端进程再强踢(Linux命令行)

SSH连上你的CentOS/Ubuntu服务器,依次执行:
# 查看正在运行的魔力服务端进程(常见名 uo、mir2、mlbb、login、game 等)
ps aux | grep -i mlbb
ps aux | grep -i game


找到类似 ./GameServer 或 ./LoginSrv 的PID(第二列数字),强制杀掉该会话关联进程(注意不是关整个服务端):
kill -9 PID号

如果只是单个账号卡死而服务端整体正常,更推荐下面数据库直接解绑法,别乱kill主进程。

二、数据库中直接清除账号在线状态(最管用)

大多数魔力宝贝单机端(兰斯、怀旧模拟器、FZ端)账号在线标记存在MySQL数据表里:
# 登录MySQL(密码按你架设时设的填,常见root/123456)
mysql -u root -p


进入MySQL后切换库(库名通常为 mir2、mlbb、cq_mir、game 或 account,看你的端说明):
show databases;
use 你的库名;
show tables;


找存账号信息的表,常见名:accounts、account、user、t_account、character、characters。
查看字段结构确认有在线状态字段:
desc accounts;
-- 或 desc account;


在线字段一般叫 isonline、f_online、online、logined,值为1表示在线。解绑指定账号:
-- 替换 你的账号名 和 表名
UPDATE accounts SET isonline=0 WHERE name='你的账号名';
-- 部分端字段名不同:
UPDATE account SET f_online=0 WHERE account='你的账号名';
UPDATE user SET online=0 WHERE charname='你的账号名';


敲 exit; 退出MySQL。回游戏重新登录即可,不用重启整个服务端。

三、重启MySQL服务(账号仍登不上或连不上时)

你提到不太会Linux,两条命令足够:
# CentOS 6 / 老版本
service mysqld restart

# CentOS 7 / Ubuntu(systemd)
systemctl restart mysqld
# 或
systemctl restart mysql


看到 OK 或 active (running) 即重启成功,再按第二步UPDATE解绑账号。

四、还不行——关服务端清内存再开

如果以上都不生效说明账号锁在网关缓存:
1. 关掉启动器或 Ctrl+C 停掉 GameServer/LoginSrv。
2. 执行上面的 systemctl restart mysqld。
3. 进MySQL按第二步UPDATE把isonline改成0并提交。
4. 重新启动魔力服务端,账号可正常登入。

常见踩坑

- 表名和字段名区分大小写(Linux下MySQL默认区分),desc 表名 先确认字段。
• 有些端在线标记存在 characters 表而非 account 表,两个表都查一下 WHERE name='xxx'。

- 用phpMyAdmin的话直接进对应表把isonline列改0点保存等同UPDATE命令。

按第二步改数据库是最稳方案,killuser 失效时99%能解决。如果不知道库名表名可以把服务端内.sql文件或说明贴给我帮你确认字段。
[顶部]