问题一:root不能登录
mysql -uroot -p 输入密码之后报下列错:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
原因一:密码错误
原因二:没有给root的localhost授权
解决:
跳过权限表两种方法:
①在配置文件my.cnf中的[mysqld]部分加入:
skip-grant-tables //跳过权限表,数据库正常使用的时候应该要注释,现在修改密码或者root登录不了才取消注释,重启服务
②shell环境下:#mysqld_safe --skip-grant-tables & 后台开启一个进程
下列在shell环境执行:
#mysql
mysql>use mysql
mysql>select user,host,password from user; //根据需要使用解决一还是解决二
解决一:修改密码
mysql>update user set password = password('aixocm') where user = 'root' && host = 'localhost';
解决二:授权
mysql>grant all *.* to root@'localhost' identified by ''; //给root在localhost下所有数据库的所有表所有权限,密码为空
修改密码/授权之后
mysql>flush privileges;
mysql> exit
退出后,如果是使用命令行跳过权限表,就需要杀死这个进程:pkill -9 mysql
service mysqld start
再mysql -uroot -p就可以了
问题二:root登录后不能查看mysql数据库中的表
一般使用root登录会看到information_schema,mysql,test三个数据库,但是今日用root用户一登数据库mysql不能看了
原因:添加的root的localhost授权没有权限,权限全部为N
解决:
service mysqld stop
在mysql.user表中添加用户权限。两种方法:
insert: 所有权限默认为N
grant: 可以选择将哪个权限置为Y
用root用户mysql数据库不能看,是因为root用户,主机为localhost的权限为N
使用
-
mysql>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',Create_tablespace_priv='Y' where user='root' and host= 'localhost';
Event_priv,Trigger_priv,Create_tablespace_priv这三个权限在5.0版本里面没有。
退出刷新服务就可以了
mysql权限表:
MySQL权限表存放在mysql数据库里,由mysql_install_db脚本初始化,这些权限表分别user,db,table_priv,columns_priv和host
user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
db权限表:记录各个帐号在各个数据库上的操作权限。
tables_priv权限表:记录数据表级的操作权限。
columns_priv权限表:记录数据列级的操作权限。
host权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。
+--------------+-----------------------+------------------+
| user | host | password |
+--------------+-----------------------+------------------+
| root | localhost | |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost.localdomain | |
host列是指定登录的ip
::1 是ipv6地址的127.0.0.1缩写,即是本机,127.0.0.1和localhost都是本机
远程登录:在别的机器上面远程连接10.1.1.248的mysql数据库,需要在10.1.1.248上配置root用户的%主机权限
[root@localhost ~]# mysql -uroot -p -h10.1.1.248
Enter password:
报错:
[root@localhost src]# mysql -uadmin -h10.1.1.248 -p
Enter password:
ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
解决:
[root@localhost src]# mysql -uadmin -h10.1.1.248 -p --skip-secure-auth
阅读(2086) | 评论(0) | 转发(0) |