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):
-
findMySQLconfiguration来编辑:
/etc/mysql/my.cnf(Mysql 5.5)
/etc/mysql/conf.d/mysql.cnf(Mysql 5.6+)
-
在configuration文件中find
bind-address=127.0.0.1
更改bind-address=0.0.0.0
(您可以设置绑定地址到您的一个接口ips或像我一样使用0.0.0.0) -
重新启动mysql服务在控制台上运行:
service restart mysql
-
用远程连接的安全密码创build一个用户。 要做到这一点在MySQL中运行以下命令(如果你是Linux用户到达MySQL控制台运行
mysql
,如果你设置密码为root运行mysql -p
):GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'safe_password' WITH GRANT OPTION;`
现在你应该有一个用户名和user
名和密码safe_password
与远程连接的能力。