mysql新用户访问被拒绝

时间:2012-12-31 06:23:20

标签: mysql

刚开始使用mysql。我使用root登录并按照在线参考创建新用户:

mysql> CREATE USER 'abc'@'%' IDENTIFIED BY '111111';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'abc'@'%' WITH GRANT OPTION;

然后我退出并尝试使用新用户登录:

mysql --user=abc --password=111111 mysql

但收到了错误消息:

  

用户访问被拒绝' abc' @' localhost' (使用密码:是)

我错过了什么吗?

5 个答案:

答案 0 :(得分:18)

运行此功能

FLUSH PRIVILEGES

一旦为用户提供了所需的权限,您将需要FLUSH权限才能完成设置并使新设置正常工作。为此,请在SQL命令提示符下运行此命令:

<强> [编辑]
如果您还想从localhost连接,则应创建另一个帐户。

  

必须让“用户”的两个帐户都能够连接   从任何地方作为'用户'。没有localhost帐户,   由[创建]创建的localhost的匿名用户帐户   当'user'从中连接时,mysql_install_db优先   当地主持人。因此,“用户”将被视为匿名用户。   原因是匿名用户帐户有更多   特定主机列值比'用户'@'%'帐户因此而来   早期的用户表排序顺序。 )

仅供参考:http://dev.mysql.com/doc/refman/5.5/en/adding-users.html

答案 1 :(得分:3)

就我而言,问题出在密码上。在使它包含较少数量的特殊字符后,它开始工作。

答案 2 :(得分:1)

从&#39;%&#39;更改主机到#localhost&#39;为我工作。

但我不知道为什么。

记住&#39;刷新权限;&#39;

我正在使用 mysql Ver 15.1 Distrib 10.1.32-MariaDB,for Linux(x86_64)使用readline 5.1

答案 3 :(得分:0)

通常这对我有用:

登录 MySQL

mysql -u root -p

创建一个 MySQL 用户

CREATE USER 'username'@'ip' IDENTIFIED BY '*password*';

允许该用户完全控制

GRANT ALL PRIVILEGES ON * . * TO 'username'@'ip';

重新加载权限表

FLUSH PRIVILEGES;

离开 MySQL 界面

exit;

允许从特定 ip 到端口 3306 的外部访问

sudo ufw allow from ip to any port 3306

转到 MySQL 配置文件

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

允许 MySQL 从外部寻找连接

变化:

bind-address            = 127.0.0.1

致:

bind-address            = 0.0.0.0

在 MySQL 8+ 中,此行一开始就没有,如果有,请添加

重启 MySQL

sudo systemctl restart mysql

然而,由于某种原因,我仍然遇到“用户访问被拒绝”的问题,所以如果有人可以扩展我的回答并解决我的问题,那就太棒了。

答案 4 :(得分:-1)

就是这样。

grant all privileges on *.* to `root`@`%` identified by 'chnagethepasswordhere'; 
flush privileges;
--helps to excute store procedure as root user

GRANT EXECUTE ON PROCEDURE mbu4u.ratingProcedure TO 'root'@'ip.ip.ip.ip' identified by 'changepasswordheere';

GRANT ALL ON mbu4u.* TO root@'ip.ip.ip.ip' IDENTIFIED BY 'changepassword';

dantheman @have美好的一天!