Mysql添加用户进行远程访问

我用password 'password user@'%'创build了用户user@'%' 。 但我无法连接:

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

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

为了远程连接,您必须将MySQL绑定端口3306连接到my.cnf中的机器IP地址。 然后,你必须在localhost和'%'通配符中创build用户,并授予所有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'@'%'; 

根据您的操作系统,您可能必须打开端口3306才能进行远程连接。

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

 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) 

所以回到你的问题“%”操作符意味着你的networking中的所有计算机。

像aspesa显示我也相信你必须创build或更新用户。 寻找你所有的mysql用户:

 SELECT user,password,host FROM user; 

只要你有你的用户设置你应该能够这样连接:

 mysql -h localhost -u gmeier -p 

希望它有帮助

遵循指示(窗口中不需要步骤1至3):

  1. findMySQLconfiguration来编辑:

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

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

  2. 在configuration文件中findbind-address=127.0.0.1更改bind-address=0.0.0.0 (您可以设置绑定地址到您的一个接口ips或像我一样使用0.0.0.0)

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

  4. 用远程连接的安全密码创build一个用户。 要做到这一点在MySQL中运行以下命令(如果你是Linux用户到达MySQL控制台运行mysql ,如果你设置密码为root运行mysql -p ):

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

现在你应该有一个用户名和user名和密码safe_password与远程连接的能力。