我创建用户[email protected]'%'
与password 'password
。但我无法连接使用:Mysql添加远程访问用户
mysql_connect('localhost:3306', 'user', 'password');
当我创建的用户[email protected]'localhost'
,我是能够连接。为什么? '%'是不是来自任何主机?
我创建用户[email protected]'%'
与password 'password
。但我无法连接使用:Mysql添加远程访问用户
mysql_connect('localhost:3306', 'user', 'password');
当我创建的用户[email protected]'localhost'
,我是能够连接。为什么? '%'是不是来自任何主机?
为了连接远程你必须让MySQL绑定端口3306到my.cnf中你机器的IP地址。然后你必须在localhost和'%'通配符中创建用户,并授予所有DB的权限。见下图:
的my.cnf(my.ini文件在Windows上)
#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以允许远程连接。
为什么DB是用户?看看下面这个例子
mysql> create database databasename;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on databasename.* to [email protected] 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 gmeier -p
希望它有助于
一般来说,对于所有db。我只想连接,而不是选择数据库。 'code'mysql_connect('localhost:3306','user','password'); 'code' – user2333586 2013-04-29 20:54:42
你在什么操作系统上,Windows,Linux? – apesa 2013-04-29 21:01:59
窗口。 wamp服务器。 – user2333586 2013-04-29 21:44:32
按照指令(步骤1至3在Windows中不需要):
查找mysql的配置编辑:
/etc/mysql/my.cnf(mysql的5.5)
/etc/mysql/conf.d/mysql.cnf(mysql的5.6+)
查找bind-address=127.0.0.1
在配置文件中的变化bind-address=0.0.0.0
(你可以绑定地址设置为你的界面IPS的一个或像我一样使用0.0.0.0)在控制台上
重启MySQL服务运行: service restart mysql
创建一个用户用于远程连接的安全密码。要做到这一点来看下面的MySQL命令(如果您是Linux用户达到mysql的控制台运行mysql
如果你根运行mysql -p
设置密码):
GRANT ALL PRIVILEGES
ON *.* TO 'remote'@'%'
IDENTIFIED BY 'safe_password'
WITH GRANT OPTION;`
现在你应该有与名称的用户user
和密码safe_password
与远程连接的能力。
更改bind-address = 0.0.0.0 ...为我工作。并授予权限 – zwitterion 2016-08-11 19:56:52
这帮助我使用WebFaction私有MySQL实例。我跟着你的CREATE USER和GRANT ALL的步骤,在我的php.ini中设置'mysql.default_port = <私人实例端口>',然后在整个我的db主机名中使用'127.0.0.1' – spex 2013-09-11 18:41:03
非常有用。只是一个评论。 my.cnf可能会包含另一个配置文件,因此相关的行可能在其他地方。在my.cnf中查找以!include开头的行,如果bind-address不在my.cnf中,它可能位于包含的文件中。 – Joan 2017-02-05 09:20:34
my.cnf文件在哪里? – 2017-10-18 15:24:36