为什么我不能使用对数据库有权限的新用户登录 MySQL?

为什么我不能使用对数据库有权限的新用户登录 MySQL?

我在 MySQL 中创建了一个用户,但是无法用它登录。

MariaDB [(none)]> create user fe_joomla;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all on fe_joomla.* to fe_joomla;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show grants for fe_joomla;
+----------------------------------------------------------+
| Grants for fe_joomla@%                                   |
+----------------------------------------------------------+
| GRANT USAGE ON *.* TO 'fe_joomla'@'%'                    |
| GRANT ALL PRIVILEGES ON `fe_joomla`.* TO 'fe_joomla'@'%' |
+----------------------------------------------------------+
2 rows in set (0.00 sec)

$ mysql -u fe_joomla fe_joomla
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'fe_joomla'

我遵循了本指南。http://www.mysqltutorial.org/mysql-grant.aspx

答案1

旧版本的 MySQL 默认创建了一些用户名为空的测试帐户。这些帐户大多无害,但却非常成问题。有一个脚本可以mysql_secure_installation清除这些帐户,但似乎在设置系统时没有运行该脚本。

运行此查询以确认:

mysql> SELECT * FROM mysql.user WHERE user = '';

请注意,这''是两个单引号字符,'而不是一个双引号"

确保拥有完整备份后为了安全起见,请删除这些测试帐户。(这应该是一个非常安全的操作,但备份是很好的做法。)

mysql> DELETE FROM mysql.user WHERE user = '';
mysql> FLUSH PRIVILEGES;

这些测试帐户的问题在于,在匹配用户名时,会出现一些神奇的行为,而空用户名则具有特殊含义。这是一个糟糕的功能,最初可能是为了使入门更容易而添加的。

此后,您的新用户应该可以正常工作...但请注意,您不应该创建没有密码的帐户。

答案2

看起来您没有输入命令“flush permission”来在不重新启动的情况下激活新用户。

答案3

我删除了 fe_joomla 用户,重新创建了该用户fe_joomla@localhost并授予了权限,fe_joomla@localhost一切正常。mysql -u fe_joomla fe_joomla现在我可以使用。

create user fe_joomla@localhost;
grant all on fe_joomla.* to fe_joomla@localhost;

迈克尔的回答可能也有效。

相关内容