mysql权限问题,看不到其它的库!

今天在安装mysql数据库后,想开启远程连接,发现查询不到了mysql数据库自带的mysql数据库,是由于用户的权限问题导。

[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 ~]#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表中,修改相应权限,比如:

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','','','','',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','','','','',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'来设置密码了。

第二种情况

1.首先停止mysql服务:servicemysqld stop

2.加参数启动mysql:/usr/bin/mysqld_safe--skip-grant-tables &

然后就可以无任何限制的访问mysql了

3.root用户登陆系统:mysql -u root-p mysql

4.切换数据库:use mysql

5.显示所有的表:show tables;

这里就可以访问表了

6.查看user表中root用户的localhost权限:select *from user where user='root' and host='localhost'

7.在显示的列表中显示:root用户的localhost的权限都是'N',表示root用户本地登陆不具有权限

8.修改root用户的localhost权限:

update user set

`Select_priv` = 'Y',

`Insert_priv` = 'Y',

`Update_priv` = 'Y',

`Delete_priv` = 'Y',

`Create_priv` = 'Y',

`Drop_priv` = 'Y',

`Reload_priv` = 'Y',

`Shutdown_priv` = 'Y',

`Process_priv` = 'Y',

`File_priv` = 'Y',

`Grant_priv` = 'Y',

`References_priv` = 'Y',

`Index_priv` = 'Y',

`Alter_priv` = 'Y',

`Show_db_priv` = 'Y',

`Super_priv` = 'Y',

`Create_tmp_table_priv` = 'Y',

`Lock_tables_priv` = 'Y',

`Execute_priv` = 'Y',

`Repl_slave_priv` = 'Y',

`Repl_client_priv`= 'Y',

`Create_view_priv` = 'Y',

`Show_view_priv` = 'Y',

`Create_routine_priv` = 'Y',

`Alter_routine_priv` = 'Y',

`Create_user_priv` = 'Y',

`Event_priv` = 'Y',

`Trigger_priv` = 'Y'

where user='root' and host='localhost'//这里需注意是否有这个条件的用户

9.更新一下:flushprivileges;

10.然后重新启动下mysql,可以解决问题了




因为mysql数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的''@'localhost'可以看出来

1.关闭mysql# service mysql stop

2.屏蔽权限# mysqld_safe --skip-grant-table屏幕出现: Starting demo from .....

3.新开起一个终端输入# mysql -u root mysqlmysql> delete from user where USER=''mysql> FLUSH PRIVILEGES;

//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误




第一步:关闭mysql服务

第二步:终端输入mysql_safe --skip-grant-tables

第三步:重启mysql服务

原因:关机时。先关闭软件 再关闭服务器。

你可能感兴趣的:(mysql权限问题,看不到其它的库!)