转自:http://www.blogjava.net/jelver/archive/2015/03/22/423715.html
今天早上收到朋友的信息说他家的数据库被人干了,很是紧张,但是后面逐步排除,发现mysql安装目录下的数据文件都是正常,从linux历史执行命令日志来看也没有迹象表面是被人搞,同时mysql的错误log里面只有些不稳定的日志。最后搜索到两篇这样的文章,确定的确是权限这个问题导致的,但是为什么服务突然会有这种现象,目前还是查看中,同时整理下这两篇文章,希望能够帮到其他人。
参考的原文:
http://www.yebihai.com/kuangjiaxitong/linux/801.html
http://www.unixdo.com/DataBase/1909.html](http://www.unixdo.com/DataBase/1909.html
[root@localhost ~]# mysql -uroot -p123
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
只显示这个两个数据库,看不到mysql数据库
解决方法:
此问题实际上是用户没有权限:
1. 关闭mysql,service mysqld stop
2. 启动mysql: mysqld_safe --skip-grant-tables
3. 再打开一个ssh连接服务器,进行mysql操作
[root@localhost ~]#cd /usr/local/mysql/bin/
[root@localhost bin]#./mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>show databases;
在这个模式下是可以看到mysql数据库的。
在数据库名mysql下的user表中,修改相应权限,比如:
mysql>use mysql;
insert into user values('localhost', 'root', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0', '0', '', '', '');
如果已经存在了host为localhost的记录,则先删除该记录,delete from user where host='localhost';
然后再进行操作。
insert into user values('localhost', 'root', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0', '0', '', '', '');
操作完成后,将两个ssh连接都关闭,然后再重新连接一个ssh,启动mysql,service mysqld start,然后用mysql命令连接mysql数据库
[root@localhost ~]#mysql -uroot -p
密码为空。
[如果此时还连接不上,再重启一下mysql就好了,service mysqld restart]。
然后就可以用 [root@localhost ~]#mysqladmin -uroot password 'newpassword' 来设置密码了。