mysql新建用户本地无法登录
因为root权限过高,所以新建一用户opencms,create user '
opencms'@'%' identified by '
opencms';
权限仅为要用到的
数据库
。授权语句如下:grant all privileges on opencms.* to opencms@"%" identified by "opencms";其中@“%”是可以在任何地址登录。
创建后到
mysql.user下查看,有该用户。但是使用mysql -uopencms -popencms 登录,提示无法登录:ERROR 1045 (28000): Access denied for user 'opencms'@'localhost' (using password: YES)
百思不得其解,网上各种搜索,其中有人说到“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 all privileges on opencms.* to opencms@"localhost" identified by "opencms";