MYSQL如何配置远程连接

40次阅读
没有评论

共计 4744 个字符,预计需要花费 12 分钟才能阅读完成。

这篇文章主要介绍 MYSQL 如何配置远程连接,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

开启 MySQL 的远程登陆帐号有两大步:

1、确定服务器上的防火墙没有阻止 3306 端口。

MySQL 默认的端口是 3306,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 3306 端口连接到 MySQL 的。

如果您在安装 MySQL 时指定了其他端口,请在防火墙中开启您指定的 MySQL 使用的端口号。

如果不知道怎样设置您的服务器上的防火墙,请向您的服务器管理员咨询。

2、增加允许远程连接 MySQL 用户并授权。

1)首先以 root 帐户登陆 MySQL

在 Windows 主机中点击开始菜单,运行,输入“cmd”,进入控制台,MySQL 的 bin 目录下,然后输入下面的命令。

在 Linux 主机中在命令提示行下输入下面的命令。

CODE: [COPY]

MySQL -uroot -p123456

123456 为 root 用户的密码。

2)创建远程登陆用户并授权

CODE: [COPY]

grant all PRIVILEGES on discuz.* to ted@ 123.123.123.123 identified by 123456

上面的语句表示将 discuz 数据库的所有权限授权给 ted 这个用户,允许 ted 用户在 123.123.123.123 这个 IP 进行远程登陆,并设置 ted 用户的密码为 123456。

下面逐一分析所有的参数:

all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

discuz.* 表示上面的权限是针对于哪个表的,discuz 指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授 权为“数据库名. 表名”。

ted 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

123.123.123.123 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。

123456 为用户的密码。

执行了上面的语句后,再执行下面的语句,方可立即生效。

CODE: [COPY]

flush privileges;

—————————————————————————————————————–

解决方法:

1、改表法:

可能是你的帐号不允许从远程登陆,只能在 localhost。这个时候只要在 localhost 的那台电脑,登入 mysql 后,更改“mysql”数据库里的“user”表里的“host”项,从“localhost”改称“%”

x:\ mysql -u root -pvmware

mysql use mysql;
mysql update user set host =‘%’where user =‘root’;
mysql select host, user from user;

mysql flush privileges;

注:mysql flush privileges; 使修改生效。

2、授权法:

例如,你想 myuser 使用 mypassword 从任何主机连接到 mysql 服务器的话。

mysql GRANT ALL PRIVILEGES ON *.* TO myuser @ % IDENTIFIED BY mypassword WITH GRANT OPTION;

如果你想允许用户 myuser 从 ip 为 192.168.1.3 的主机连接到 mysql 服务器,并使用 mypassword 作为密码

mysql GRANT ALL PRIVILEGES ON *.* TO myuser @ 192.168.1.3 IDENTIFIED BY mypassword’WITH GRANT OPTION;

转自:http://hi.baidu.com/593313600/blog/item/52c13d3d4640d208baa167cf.html/cmtid/df0698f382f04d5d352acce8

——————————————————————————————————————————————————————————————–

二、问如何开启 MySQL 的远程连接

  Q:

  最近学习 PHP, 装了个 phpwind 论坛和 FTP 流量插件, 需要远程连接 MySQL 数据库. 不知道如何打开本地服务器的远程连接. 现在本地服务器上的论坛和 FTP 流量插件都运行正常, 在另一台服务器上安装插件, 连不上数据库. 到 PW 官方求助没人回贴. 因此来这寻求帮助.

  服务器信息
  PHP 程式版本: 4.3.11
  MySQL 版本: 4.1.10-nt
  服务器端信息: Microsoft-IIS/5.0
  装有 phpMyAdmin

  A1:

  远程连接到 MySQL 需要做的

  1. 进入 MySQL, 创建一个新用户 xuys:
 

  格式: grant 权限 on 数据库名. 表名 用户 @登录主机 identified by 用户密码
  grant select,update,insert,delete on *.* to xuys@192.168.88.234 identified by xuys1234

  查看结果, 执行:
  use mysql;
  select host,user,password from user;

  可以看到在 user 表中已有刚才创建的 xuys 用户,host 字段表示登录的主机, 其值可以用 IP, 也可用主机名, 将 host 字段的值改为 % 就表示在任何客户端机器上能以 xuys 用户登录到 MySQL 服务器, 建议在开发时设为 %.

  update user set host = % where user = xuys

  2.

  ./mysqladmin -u root -p pwd reload
  ./mysqladmin -u root -p pwd shutdown

  3.

  ./mysqld_safe –user=root
 

  记住: 对授权表的任何修改都需要重新 reload, 即执行第 3 步.

  如果经过以上 3 个步骤还是无法从客户端连接, 请执行以下操作, 在 MySQL 数据库的 db 表中插入一条记录:

  use mysql;
  insert into db values(192.168.88.234 , % , xuys , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y
  update db set host = % where user = xuys

  重复执行上面的第 2,3 步.

  A2:

  Web 与 MySQL 数据库分离开来是一个不错的选择, 避免因为大量的数据库查询占用 CPU 而使 Web 资源不足, 同时可以使 Web 服务器的资源尽最大的提供浏览服务, 而数据库服务器单独的只处理数据库事务.

  我对这方面的原理不甚太十分了解, 我的做法其实就是下面要说的, 很简单. 大家有更好的经验和技巧不妨提出来分享一下.

  适用范围: 拥有独立主机权限
  硬件配置: 两台服务器, 至于具体服务器硬件配置就不在本文范围内了
  其中: A 为 Web 服务器(假设 IP 为: 192.192.192.192),B 为 MySQL 数据服务器(假设 IP 为: 168.168.168.168)

  着手动作:

  1. 在 Web 服务器 A 配置好 Web 服务. 关于这方面文章很多了. 假设 Web 服务器的 IP 为: 192.192.192.192
  2. 在数据库服务器 B 安装好 MySQL 服务
  3. 现在新版的 MySQL 一般默认都不允许远程连接的, 需要建立远程连接账号才可以

  以命令行方式使用 root 账号进入 MySQL
  mysql -u root -p pass

  选择进入 MySQL 数据库
  use mysql;

  查看所有存在的账号和地址
  SELECT `Host`,`User` FROM `user`;

  比如我的就是:

  +————+——-+
  | Host  | User  |
  +————+——-+
  | localhost |  |
  | localhost | pma  |
  | localhost | root  |
  +————+——-+
  3 rows in set (0.00 sec)

  也就是说, 存在三个只允许本地连接的 (localhost) 账号, 分别为 root,pma, 空用户.

  现在决定让 root 具有上面那个 Web 服务器 A 的远程链接的权限, 那么就这样:
  UPDATE `user` SET `Host` = 192.192.192.192 WHERE `User` = root LIMIT 1;

  这样 192.192.192.192 这台 Web 服务器就可以远程连接到这个数据库服务器了, 假如你想让任何远程机器都可以连接这个数据库, 就将 192.192.192.192 换为 %, 不过不建议这样做, 原因你知道啦!

  假如你想新建一个用户 new_user 具备远程链接的权限的话, 就这样:
  INSERT INTO `user` (`Host` , `User` , `Password` , `Select_priv` , `Insert_priv` , `Update_priv` , `Delete_priv` , `Create_priv` , `Drop_priv` , `Reload_priv` , `Shutdown_priv` , `Process_priv` , `File_priv` , `Grant_priv` , `References_priv` , `Index_priv` , `Alter_priv` , `Show_db_priv` , `Super_priv` , `Create_tmp_table_priv` , `Lock_tables_priv` , `Execute_priv` , `Repl_slave_priv` , `Repl_client_priv` , `ssl_type` , `ssl_cipher` , `x509_issuer` , `x509_subject` , `max_questions` , `max_updates` , `max_connections`) VALUES (192.192.192.192 , new_user , PASSWORD( new_user_password) , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , Y , , , , , 0 , 0 , 0

  将 new_user 改为你想要的名字就可以了, 密码是: new_user_password, 当然你可以随意设置.

  当你的数据库可以远程连接后, 你就可以在你的 Web 服务器的论坛 config.inc.php 中设置 $dbhost 变量为你的 MySQL 数据库服务器 B 的 IP 了:

  $dbhost = 168.168.168.168

  实际操作中, 最好两台机器在同一个机房的同一网段 / 防火墙内. 当然如果有可能的话, 将数据库服务器放置于 Web 服务器网络内的局域网中就更好了.

  Q3:

  还是这样简洁些:

  grant all on yourdb.* to yourUsername@yourHost identified by yourPassword
  flush privileges;  // 使权限立刻生效

以上是“MYSQL 如何配置远程连接”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计4744字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)