175

user@'%'password 'password. 但我无法连接:

mysql_connect('localhost:3306', 'user', 'password');

当我创建用户user@'localhost'时,我能够连接。为什么?'%' 不是来自任何主机吗?

4

5 回答 5

449

为了远程连接,您必须让 MySQL 将端口 3306 绑定到 my.cnf 中您机器的 IP 地址。然后,您必须在 localhost 和 '%' 通配符中创建用户,并授予对所有 DB 的权限见下文:

my.cnf(Windows 上的 my.ini)

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

然后:

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

然后:

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
FLUSH PRIVILEGES;

根据您的操作系统,您可能必须打开端口 3306 以允许远程连接。

于 2013-04-29T20:58:34.327 回答
26

按照说明进行操作(Windows 中不需要步骤 1 到 3):

  1. 找到要编辑的mysql配置:

/etc/mysql/my.cnf (Mysql 5.5)

/etc/mysql/conf.d/mysql.cnf (Mysql 5.6+)

  1. bind-address=127.0.0.1在配置文件更改中查找bind-address=0.0.0.0(您可以将绑定地址设置为您的接口 IP 之一或像我一样使用 0.0.0.0)

  2. 重启在控制台运行的mysql服务: service mysql restart

  3. 为远程连接创建一个具有安全密码的用户。为此,请在 mysql 中运行以下命令(如果您是 linux 用户以访问 mysql 控制台运行mysql并且您为 root 运行设置密码mysql -p):

    授予所有特权TO 'remote'@'%' IDENTIFIED BY 'safe_password' WITH GRANT OPTION;`

现在您应该有一个具有远程连接功能的用户名user和密码。safe_password

于 2016-05-20T07:53:32.603 回答
14

用户是什么数据库?看这个例子

mysql> create database databasename;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on databasename.* to cmsuser@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

所以回到你的问题“%”运算符表示您网络中的所有计算机。

就像 aspesa 节目一样,我也确信您必须创建或更新用户。查找所有 mysql 用户:

SELECT user,password,host FROM user;

设置好用户后,您应该能够像这样连接:

mysql -h localhost -u cmsuser -p

希望能帮助到你

于 2013-04-29T20:29:23.863 回答
2

我使用了一个使用 mysql_navtive_password 密码的现有用户

CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';

而不是

CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED BY 'password';

因此无法连接。删除一个旧的并在没有 mysql_native_password 的情况下创建一个新的就可以了

于 2021-08-17T22:58:08.037 回答
0

另一种方法是使用 MySql Workbench。转到管理 -> 用户和权限 -> 并在“限制到主机匹配”(来自主机)属性中将“localhost”更改为您不会授予远程访问权限的用户或使用“添加帐户按钮”创建新用户(添加帐户按钮) %' 在这个属性上而不是 localhost。

于 2021-01-05T09:37:14.247 回答