mysql新建用户本地无法登录
2016-04-24 10:27
471 查看
初次使用mysql,因为root权限过高,所以新建一用户appadmin,权限仅为要用到的数据库。创建语句如下:grant select,insert,update,delete on test.* to appadmin@"%" identified by "password";其中@“%”是可以在任何地址登录。
创建后到mysql.user下查看,有该用户。但是使用mysql -u appadmin -ppassword 登录,提示无法登录:ERROR 1045 (28000): Access denied for user 'appadmin'@'localhost' (using password: YES)
百思不得其解,遂google,其中有人说到“mysql.user 表中有另外一些记录产生了作用,最有可能的就是已经有一条''@localhost记录,就是用户名是空,主机字段是localhost的记录。” 影响了。查看该表果然有。
mysql> select host,user,password from mysql.user;
+-----------+------------------+-------------------------------------------+
| host | user | password |
+-----------+------------------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| mza | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost | | |
| mza | | |
| localhost | debian-sys-maint | *19DF6BF8310D46D681AE072AB73ECEC99C018C19 |
| % | appadmin | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-----------+------------------+-------------------------------------------+
7 rows in set (0.00 sec)
但是删除那些为空(匿名)的用户后仍然无法登录。(可能是因为没有重启mysql)于是只好耐着性子看mysql参考手册。发现其中增加用户部分有这么一段话:
其中两个账户有相同的用户名monty和密码some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ('monty'@'localhost')只用于从本机连接时。另一个账户('monty'@'%')可用于从其它主机连接。请注意monty的两个账户必须能从任何主机以monty连接。没有localhost账户,当monty从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,monty将被视为匿名用户。原因是匿名用户账户的Host列值比'monty'@'%'账户更具体,这样在user表排序顺序中排在前面。
这段话说的很清楚,因此执行 grant select,insert,update,delete on test.* to appadmin@"localhost" identified by "password";
退出后用appadmin登录,成功。
创建后到mysql.user下查看,有该用户。但是使用mysql -u appadmin -ppassword 登录,提示无法登录:ERROR 1045 (28000): Access denied for user 'appadmin'@'localhost' (using password: YES)
百思不得其解,遂google,其中有人说到“mysql.user 表中有另外一些记录产生了作用,最有可能的就是已经有一条''@localhost记录,就是用户名是空,主机字段是localhost的记录。” 影响了。查看该表果然有。
mysql> select host,user,password from mysql.user;
+-----------+------------------+-------------------------------------------+
| host | user | password |
+-----------+------------------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| mza | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost | | |
| mza | | |
| localhost | debian-sys-maint | *19DF6BF8310D46D681AE072AB73ECEC99C018C19 |
| % | appadmin | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-----------+------------------+-------------------------------------------+
7 rows in set (0.00 sec)
但是删除那些为空(匿名)的用户后仍然无法登录。(可能是因为没有重启mysql)于是只好耐着性子看mysql参考手册。发现其中增加用户部分有这么一段话:
其中两个账户有相同的用户名monty和密码some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ('monty'@'localhost')只用于从本机连接时。另一个账户('monty'@'%')可用于从其它主机连接。请注意monty的两个账户必须能从任何主机以monty连接。没有localhost账户,当monty从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,monty将被视为匿名用户。原因是匿名用户账户的Host列值比'monty'@'%'账户更具体,这样在user表排序顺序中排在前面。
这段话说的很清楚,因此执行 grant select,insert,update,delete on test.* to appadmin@"localhost" identified by "password";
退出后用appadmin登录,成功。
相关文章推荐
- 处理mysql的查询语句去重案例一则
- mysqldumpslow使用
- mysql max函数不能用在where条件中的案例
- MySQL绿色版的安装(mysql-5.6.22-win32.zip)
- 跟我一起学习MySQL技术内幕(第五版):(第二章学习日记10)
- [mysql] ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.
- mysql表的字符集uft8转换成gbk测试
- mysql ndb集群备份数据库和还原数据库的方法
- mysql 加了 skip-name-resolve不能链接数据库问题的解决方法
- mysql表名大小写敏感
- MySQL排错工具perror
- MySQL查询优化
- "Table 'mysql.plugin' doesn't exist"引发de血案
- 清空mysql的历史记录
- mysqldump 用法
- mysql5.5解压缩版安装步骤
- mysql管理工具
- install mysql on ubuntu
- mysql 做增量备份
- MySQL QA 入门序列