刚开始使用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' (使用密码:是)
我错过了什么吗?
答案 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';