同事告诉我,服务器长时间不用,上面不知道有啥东西,让我看看。
我先上去sudo netstat -tulpn查看一下有哪些端口再用。
发现我可以认识3306。说明服务器上以前用过MySQL数据库。
检查一下数据库启动状态:sudo systemctl stop mysqld
发现执行不了,换个方式试试。
sudo service mysqld status
发现stop ,说明mysql不启动的。
用sudo service mysqld start启动。
启动之后,我主要是想看看mysql库有什么内容,但是我不知道数据库的密码。
继续尝试:
sudo mysqld_safe --skip-grant-tables &
跳过密码检查,使用无密码登录
mysql -u root
执行对应的密码重置命令
USE mysql;
UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;
报错了,说unknown column 'authentication_string' in field list... ...
select version(); 查看一下数据库版本,发现是5.1.73
原来是 MySQL 5.1.73 版本的问题,authentication_string
列确实不存在,因为该列是 MySQL 5.7+ 才引入的,在 MySQL 5.1 中,密码存储在 user
表的 Password
字段中。以下是适用于 MySQL 5.1.73 的重置 root 密码完整语句:
USE mysql;
UPDATE user SET Password=PASSWORD('新密码') WHERE User='root';
FLUSH PRIVILEGES;
到这里我修改了root的密码。
EXIT;
sudo service mysqld stop
sudo service mysqld start
重启一下mysql。
mysql -u root -p
使用新密码就可以登录上去了。
然后show databases;查看有哪些数据库。
use 显示出来的数据库;
show tables;
select * from 显示出来的数据表;
检查了很多表,都是空表;
我记得之前还用过好用的语句,直接把每个表有多少行数据查出来的,但是实际工作到此我就可以交差了。
有喜欢研究的小伙伴可以评论区里讨论。
最后提示:5.1.73 是非常古老的版本(2013 年已停止维护),存在安全漏洞,建议升级到 MySQL 5.7 或 8.0。
之后我还会发布项目实战良心干货,希望可以和网友一起讨论交流,也想留个关注。感谢每一位读者朋友。
2025_7_3