我使用user@'%'
创建了用户password 'password
。但我无法联系:
mysql_connect('localhost:3306', 'user', 'password');
当我创建用户user@'localhost'
时,我能够连接。为什么? '%'是不是来自任何主持人?
答案 0 :(得分:317)
要远程连接,您必须将MySQL绑定端口3306连接到my.cnf中计算机的IP地址。然后你必须在localhost和'%'通配符中创建用户,并在所有数据库上授予权限。见下文:
my.cnf(my.ini on 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才能进行远程连接。
答案 1 :(得分:14)
按照说明操作(Windows中不需要步骤1到3):
找到要编辑的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
,并且如果您为root run mysql -p
设置密码):
GRANT ALL PRIVILEGES
ON *.* TO 'remote'@'%'
IDENTIFIED BY 'safe_password'
WITH GRANT OPTION;`
现在,您应该拥有一个名为user
且密码为safe_password
且具有远程连接功能的用户。
答案 2 :(得分:11)
用户是什么数据库?看看这个例子
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 gmeier -p
希望有所帮助
答案 3 :(得分:0)
另一种方法是使用 MySql Workbench。 转至管理 -> 用户和权限 -> 并在“限制到主机匹配”(来自主机)属性中将“本地主机”更改为“%”,用于您不会授予远程访问权限的用户或使用“创建新用户(添加帐户按钮)” %' 在这个属性上而不是本地主机。