Mysql添加用户进行远程访问

时间:2013-04-29 20:24:16

标签: mysql remote-access

我使用user@'%'创建了用户password 'password。但我无法联系:

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

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

4 个答案:

答案 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):

  1. 找到要编辑的mysql配置:

      

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

         

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

  2. 在配置文件中查找bind-address=127.0.0.1更改bind-address=0.0.0.0(您可以将绑定地址设置为您的某个界面ips或像我一样使用0.0.0.0)

  3. 在控制台上重启mysql服务: service restart mysql

  4. 使用安全密码创建一个用于远程连接的用户。要执行此操作,请在mysql中运行以下命令(如果您是linux用户以访问mysql控制台运行mysql,并且如果您为root run mysql -p设置密码):

    GRANT ALL PRIVILEGES 
     ON *.* TO 'remote'@'%' 
     IDENTIFIED BY 'safe_password' 
     WITH GRANT OPTION;`
    
  5. 现在,您应该拥有一个名为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。 转至管理 -> 用户和权限 -> 并在“限制到主机匹配”(来自主机)属性中将“本地主机”更改为“%”,用于您不会授予远程访问权限的用户或使用“创建新用户(添加帐户按钮)” %' 在这个属性上而不是本地主机。