[转载]mysqlcreate新建用户host使用%,本地无法连接原因及解决方法
2017-01-19 13:49
816 查看
转载自 http://www.2cto.com/database/201307/225781.html
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)于是只好耐着性子看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,因为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时Host (服务器ip地址) is not allowed to connect to this MySQL server 的解决方法
- 关于使用jdbc连接服务器MySQL无法使用中文查询的解决方法
- mysql本地登录无法使用端口号登录的解决方法
- ubuntu下安装使用MySQL的一些注意事项(远程无法连接解决方法)
- Oracle新建用户使用sysdba可以登录,但用普通用户却无法登录之解决方法
- SQL2008无法连接到.\SQLEXPRESS,用户'sa'登录失败(错误18456)图文解决方法(转载)
- SQL本地管理员用户及新建授权用户输入密码无法登录,且sa被禁用时解决方法
- ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法(转载)
- 解决MySQL新建用户本地无法登陆问题
- MySQL普通用户无法本地登录的解决方法及MySQL的用户认证算法
- mysql 修改密码忘记使用password函数导致后面无法连接,解决方法记录
- 使用远程桌面连接无法显示本地硬盘解决方法
- Debian9中无法连接Mariadb(Mysql)的原因及解决方法
- 转载:mysql新建用户本地无法登录
- WAMP2.5 MySQL新建用户后无法登陆的解决方法
- MySQL连接无法解析HOST主机名的解决方法
- rhel5的xen内核无法使用串口的原因和解决方法
- 【Vegas原创】使用GreenAMP时,提示“无法载入mysql扩展”解决方法
- 使用TOMCAT5.5连接池连接mysql(解决Cannot create JDBC driver of class '' for connect URL 'null')