怎么让mysql允许远程连接的方法
mysql默认状态是只支持localhost连接,这样远程服务器都输入IP地址去连接你的服务器是不可以的,下面我来介绍怎么让mysql允许远程连接配置方法,有需要的朋友可参考。
方法一,直接利用在“权限”-》管理中修改用户选择或输入IP地址。
方法二,使用mysql的GRANT命令进行操作
例如:让newuser用户使用newpwd密码从IP:19216813主机链接到mysql服务器
具体步骤:
代码如下
mysql>GRANT ALL PRIVILEGES ON TO ‘newuser’@’19216813′ IDENTIFIED BY ‘newpwd’ WITH GRANT OPTION;
mysql>flush privileges;
完整配置方法
假设我们有:
代码如下
Web-Server : 1921681100 //ubuntu
Mysql-Server : 1921681101 //xp
我们可以按照下面的步骤修改:
1, 登录 Mysql-Server 连接本地 mysql (默认只允许本地连接)
代码如下
Microsoft Windows XP [版本 512600]
(C) 版权所有 1985-2001 Microsoft Corp
C:Documents and Settingskuco>mysql -h localhost -u root -p
Enter pass:
Welcome to the MySQL monitor Commands end with ; or g
Your MySQL connection id is 13
Server version: 5145-community-log MySQL Community Server (GPL)
Type 'help;' or 'h' for help Type 'c' to clear the current input statement
mysql>
2, 修改 Mysql-Server 用户配置
代码如下
mysql> USE mysql; -- 切换到 mysql DB
Database changed
mysql> SELECT User, Password, Host FROM user; -- 查看现有用户,密码及允许连接的主机
+------+----------+-----------+
| User | Password | Host |
+------+----------+-----------+
| root | | localhost |
+------+----------+-----------+
1 row in set (000 sec)
mysql> -- 只有一个默认的 root 用户, 密码为空, 只允许 localhost 连接
mysql> -- 下面我们另外添加一个新的 root 用户, 密码为空, 只允许 1921681100 连接
mysql> GRANT ALL PRIVILEGES ON TO 'root'@'1921681100' IDENTIFIED BY '' WITH GRANT OPTION;
mysql> -- 当然我们也可以直接用 UPDATE 更新 root 用户 Host, 但不推荐, SQL如下:
mysql> -- UPDATE user SET Host='1921681100' WHERE User='root' AND Host='localhost' LIMIT 1;
grant 权限名(所有的权限用all) on 库名(全部)表名(全部) to ’要授权的用户名‘@’%'(%表示所有的IP,可以只些一个IP) identified by “密码”;
身份检查使用user表(Host, User和Password)3个范围列执行。服务器只有在user表记录的Host和User列匹配客户端主机名和用户名并且提供了正确的密码时才接受连接。
在user表Host值的指定方法:
Host值可以是主机名或IP号,或’localhost’指出本地主机。
你可以在Host列值使用通配符字符“%”和“_”。
Host值’%'匹配任何主机名,空Host值等价于’%'。它们的含义与LIKE操作符的模式匹配操作相同。例如,’%'的Host值与所有主机名匹配,而’%mysqlcom’匹配mysqlcom域
的所有主机。
3, 修改 Mysql 配置文件 myini
代码如下
bind-address = 127001
将 bind-address = 127001 这一行注释掉, 即修改为:
代码如下
#bind-address = 127001
到此 Mysql-Server 端配置就完成了
4, 连接 Web-Server , 检查一下是否能连上
代码如下
kuco@kuco-desktop:/$ /opt/lampp/bin/mysql -h 1921681101 -u root -p
Enter password:
Welcome to the MySQL monitor Commands end with ; or g
Your MySQL connection id is 23
Server version: 5145-community-log MySQL Community Server (GPL)
Type 'help;' or 'h' for help Type 'c' to clear the current input statement
mysql> -- 一切OK
默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/myconf文件。
一、修改/etc/mysql/myconf
找到bind-address = 127001这一行
改为bind-address = 0000即可
二、为需要远程登录的用户赋予权限
1、新建用户远程连接mysql数据库
grant all on to admin@'%' identified by '123456' with grant option;
flush privileges;
允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。
注意admin账户不一定要存在。
2、支持root用户允许远程连接mysql数据库
grant all privileges on to 'root'@'%' identified by '123456' with grant option;
flush privileges;
三、查看系统用户
开启 MySQL 的远程登陆帐号有两大步:
1、确定服务器上的防火墙没有阻止 3306 端口。
MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 3306 端口连接到 MySQL 的。
如果您在安装 MySQL 时指定了其他端口,请在防火墙中开启您指定的 MySQL 使用的端口号。
如果不知道怎样设置您的服务器上的防火墙,请向您的服务器管理员咨询。
2、增加允许远程连接 MySQL 用户并授权。
1)首先以 root 帐户登陆 MySQL
在 Windows 主机中点击开始菜单,运行,输入“cmd”,进入控制台,MySQL 的 bin 目录下,然后输入下面的命令。
在 Linux 主机中在命令提示行下输入下面的命令。
> MySQL -uroot -p123456
123456 为 root 用户的密码。
2)创建远程登陆用户并授权
> grant all PRIVILEGES on discuz to ted@'123123123123' identified by '123456';
上面的语句表示将 discuz 数据库的所有权限授权给 ted 这个用户,允许 ted 用户在 123123123123 这个 IP 进行远程登陆,并设置 ted 用户的密码为 123456 。
下面逐一分析所有的参数:
all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,sqlserver/42947htm target=_blank >delete,create,drop 等,具体权限间用“,”半角逗号分隔。
discuz 表示上面的权限是针对于哪个表的,discuz 指的是数据库,后面的
表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“”,对于某一数据库的全部表授权为“数据库名”,对于某一数据库的某一表授
权为“数据库名表名”。
ted 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。
123123123123 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。
123456 为用户的密码。
执行了上面的语句后,再执行下面的语句,方可立即生效。
> flush privileges;
远程登录mysql一些常用的代码段,大家可参考一下。
一、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如下:
在本机先使用root用户登录mysql:
mysql -u root -p"youpassword"
进行授权操作:
mysql>GRANT ALL PRIVILEGES ON TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit
二、允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限,具体操作如下:
在本机先使用root用户登录mysql:
mysql -u root -p"youpassword"
进行授权操作:
GRANT ALL PRIVILEGES ON TO root@"1721616152" IDENTIFIED BY "youpassword" WITH GRANT OPTION;
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit
三、允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限,具体操作如下:
在本机先使用root用户登录mysql:
mysql -u root -p"youpassword"
进行授权操作:
GRANT select,insert,update,delete ON TO root@"1721616152" IDENTIFIED BY "youpassword";
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit
四、删除用户授权,需要使用REVOKE命令,具体命令格式为:
REVOKE privileges ON 数据库[表名] FROM user-name;
具体实例,先在本机登录mysql:
mysql -u root -p"youpassword"
进行授权操作:
GRANT select,insert,update,delete ON TEST-DB TO test-user@"1721616152" IDENTIFIED BY "youpassword";
再进行删除授权操作:
REVOKE all on TEST-DB from test-user;
注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。
最后从用户表内清除用户:
DELETE FROM user WHERE user="test-user";
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit
配置mysql允许远程连接的方法
默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/myconf文件。
一、修改/etc/mysql/myconf
找到bind-address = 127001这一行
改为bind-address = 0000即可
二、为需要远程登录的用户赋予权限
1、新建用户远程连接mysql数据库
grant all on to admin@'%' identified by '123456' with grant option;flush privileges;
允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。
注意admin账户不一定要存在。
2、支持root用户允许远程连接mysql数据库
grant all privileges on to 'root'@'%' identified by '123456' with grant option;flush privileges;
笔者在一个实际的项目中需要MYSQL远程访问
情景: 安装好Mysql, 本地访问正常,很奇怪局域的机器都无法访问该服务器上的MYSQL数据库
经过资料查找
原来Mysql默认是不可以通过远程机器访问的,通过下面的配置可以开启远程访问
在MySQL Server端:
登陆MYSQL bin\ mysql -h localhost -u root -p
提示你输入密码,输入密码后进入
mysql 命令模式,
mysql> use mysql;
mysql> GRANT ALL ON TO admin@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;
#这句话的意思 ,允许任何IP地址(上面的 % 就是这个意思)的电脑 用admin帐户 和密码(admin)来访问这个MySQL Server
#必须加类似这样的帐户,才可以远程登陆。 root帐户是无法远程登陆的,只可以本地登陆
在服务器上,使用IP地址和新的用户,确实可以访问服务器,但是远程机器还是无法访问到该MYSQL
经过关闭服务器上防火墙,噢, MYSQL是可以访问拉但是从安全角度出发,是不允许关闭防火墙的
解决方法:
1,控制面板 打开防火墙,在进入规则中新建一个规则
2 选择端口,然后下一步
3选择TCP 端口,填 80,3306 端口号 按下一步
4 选择允许所有连接
5 下一步全选
0条评论