Chinaunix首页 | 论坛 | 博客
  • 博客访问: 135397
  • 博文数量: 22
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 494
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-29 09:06
文章分类

全部博文(22)

文章存档

2015年(3)

2014年(14)

2013年(5)

我的朋友

分类: LINUX

2014-09-23 20:24:20

问题一: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
            使用
  1. 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
阅读(2118) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~