安装命令:
apt-get -y install mysql-server python-mysqld
中间会提示输入root用户名密码
ok
新建用户无法访问:
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '$MYSQL_PASS';
mysql -unova -ppassword 登录,提示无法登录:
ERROR 1045 (28000): Access denied for user 'nova'@'localhost' (using password: YES)
原因:
mysql.user 表中有另外一些记录产生了作用,最有可能的就是已经有一条''@localhost记录,就是用户名是空,主机字段是localhost的记录。” 影响了。查看该表果然有。
mysql> select Host,User,Password from user;
+-------------+----------------------+-----------------------------------------------------------------------+
| Host | User | Password |
+-------------+----------------------+-----------------------------------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| mars | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| 127.0.0.1 | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| ::1 | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| mars | | |
| localhost | debian-sys-maint | *0FDD7F022845BD90AB175D2E5295F86A42FD107B |
| % | nova | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
+-------------+-----------------------+----------------------------------------------------------------------+
但是删除那些为空(匿名)的用户后仍然无法登录。要重启一个mysql 服务。
sudo service mysql restart
退出后可以成功用nova登录了。
mysql参考手册解释:
其中两个账户有相同的用户名monty和密码some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 ('monty'@'localhost')只用于从本机连接时。另一个账户('monty'@'%')可用于从其它主机连接。请注意monty的两个账 户必须能从任何主机以monty连接。没有localhost账户,当monty从本机连接时,mysql_install_db创建的 localhost的匿名用户账户将占先。结果是,monty将被视为匿名用户。原因是匿名用户账户的Host列值比'monty'@'%'账户更具体, 这样在user表排序顺序中排在前面。