MySQL 中添加能远程访问的用户

我用 password 'password创建了用户 user@'%'。但是我不能连接到:

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

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

451094 次浏览

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

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

希望能有所帮助

为了远程连接,必须让 MySQL 将端口3306绑定到 my.cnf 中计算机的 IP 地址。然后,您必须在 localhost 和“%”通配符中创建用户,并授予所有数据库(如 .)的权限:

Cnf (窗口上的 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以允许远程连接。

遵循说明(在 Windows 中不需要步骤1到3) :

  1. 找到 mysql 配置进行编辑:

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

Etc/Mysql/Conf.d/Mysql.cnf (Mysql 5.6 +)

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

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

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

GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'safe_password' WITH GRANT OPTION;

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

另一种方法是使用 MySqlWorkbench。 进入管理-> 用户和特权-> 并在“限制主机匹配”(来自主机)属性中将“ localhost”中的“%”改为“您想给予远程访问的用户”,或者在该属性中用“%”代替 localhost 创建新用户(添加帐户按钮)。

我使用了一个已经有密码的用户,该用户使用 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 _ national _ password 的新的就可以了