这应该很简单,但我不能让它为我的一生工作。我只是想远程连接到我的MySQL服务器。

连接方式:mysql-u根-h本地主机-p工作正常,但尝试:mysql-uroot-h'这里的任何ip地址'-p失败,错误为:错误1130(00000):主机“xxx.xx.xxx.xxx”不允许连接到此MySQL服务器

在mysql.user表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户完全相同。

我束手无策,不知道该怎么办。欢迎提出任何想法。


当前回答

必须创建一个新的MySQL用户,并通过phpMyAdmin或命令提示符在查询提示符中分配如下权限:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

完成所有四个查询后,应使用用户名/密码进行连接

其他回答

那么,您可以做的就是打开mysql.cfg文件,然后将Bind地址更改为

绑定地址=127.0.0.1

然后重新启动mysql,您将能够将该服务器连接到此服务器。

看这个,你可以从那个里得到想法。

这是真的溶胶

如果手动修改授权表(使用INSERT、UPDATE等),则应执行FLUSH PRIVILEGES语句,告诉服务器重新加载授权表。

PS:我不建议允许任何主机连接任何用户(尤其是非root用户)。如果您将mysql用于客户机/服务器应用程序,请首选子网地址。如果您在web服务器或应用程序服务器上使用mysql,请使用特定的IP。

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

这个错误是因为没有root用户的密码,当您尝试从外部连接时,可能会发生这种情况。

这适用于任何未来的远程mysql连接!

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

导航到以bind address指令开头的行。应该是这样的:

    bind-address            = 0.0.0.0

以root终端身份登录mysql

    mysql -u root -p
    -- root password

    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

    CREATE USER 'username'@'%' IDENTIFIED BY 'password';

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

    EXIT;

最后,使用以下命令授予该计算机远程连接到数据库的独占权限。

    sudo ufw allow from remote_IP_address to any port 3306

只需执行以下步骤:

连接到MySQL(通过localhost)mysql-uurot-p如果MySQL服务器在Kubernetes(K8s)中运行并通过NodePort访问kubectl exec-it[pod name]--/bin/bashmysql-uurot-p

创建用户CREATE USER“USER”@“%”IDENTIFIED BY“password”;授予权限使用GRANT OPTION将*.*上的所有特权授予'user'@'%';刷新权限刷新特权;