mysql,设置远程访问,解决本地(localhost)无法访问

您所在的位置:网站首页 远程ip mysql,设置远程访问,解决本地(localhost)无法访问

mysql,设置远程访问,解决本地(localhost)无法访问

2023-07-03 09:54| 来源: 网络整理| 查看: 265

设置远程访问

第一种(改表法):(推荐)

修改host字段的值,将localhost修改成需要远程连接数据库的ip地址。或者直接修改成%。修改成%表示,所有主机都可以通过root用户访问数据库。为了方便,我直接修改成%。命令:

mysql> update user set host = '%' where user = 'root';

第二种(授权法):

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

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

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

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.64' IDENTIFIED BY 'root' WITH GRANT OPTION;

输入命令:

mysql> FLUSH PRIVILEGES;

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

本地(localhost)无法访问:

本地无法连接,远程连接进行操作

1,查看用户信息:

mysql> SELECT * FROM mysql.user

在这里插入图片描述

2,给localhost添加user和password:

update user set user='root' where host='localhost'; update user set Password='******************' where host='localhost';

Password为密码(加码需要转码),可以复制其他行的代码 此时,本地可以访问,但是没有任何权限

3,修改权限,即***_priv: 修改所有的****_priv为Y

update user set ****_priv='Y' where host='localhost';

保证所有的****_priv为Y

此时,本地就正常了

## 方法二

https://www.cnblogs.com/lyq-biu/p/10859273.html

配置Mysql远程连接 一.赋予某个用户权限   1.赋予权限格式:grant 权限 on 数据库对象 to 用户@IP(或者相应正则)     注:可以赋予select,delete,update,insert,index等权限精确到某一个数据库某一个表。     GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;     这里表示赋予该用户所有数据库所有表(*.*表示所有表),%表示所有IP地址。   2.刷新权限:FLUSH PRIVILEGES;   3.查看权限:select user,host from mysql.user;        注:mysql是自带的数据库名,里面的表是Mysql相关配置信息端口,事件等等,其中user存放用户信息          3.按理就可以在其他IP地址连接了(使用mysql -u用户名 -h服务器ip地址 -P端口号 -p) 二.意外   1.配置文件种指定了blind-address:     查看Mysql配置文件种(一般是/etc/my.cnf种)是否指定了blind-address,这表示只能是某个或某几个ip能连接。如果有就将它注释了,前面加#号注释。然后从启mysql。     重启mysql:service mysqld restart,如果安装的是Mariadb(我的就是),则需要使用systemctl restart mariadb.service   2.防火墙的原因:     可能会报:ERROR 2003 (HY000): Can't connect to MySQL server on '你要连接的IP' (111)。     原因:1.可能是Mysql端口不对(默认是3306),只需加参数 -P 你的端口指定就行; 查看mysql服务端口        2.还有可能是有防火墙阻止,可以通过telnet来测试(可以直接关闭防火墙)。           防火墙相关命令:             (1)查看防火墙状态:service iptables status或者systemctl status firewalld或者firewall-cmd --state             (2)暂时关闭防火墙:systemctl stop firewalld或者service iptables stop或者systemctl stop firewalld.service             (3)永久关闭防火墙:systemctl disable firewalld或者chkconfig iptables off或者systemctl disable firewalld.service             (4)重启防火墙:systemctl enable firewalld或者service iptables restart 或者systemctl restart firewalld.service              (5)永久关闭后重启:chkconfig iptables on      3.端口未开启:(我遇到的就是这个原因)       Mysql:ERROR 2003 (HY000) 110(连接超时)       查看你的服务器是否把对应端口打开,未打开启动就行了。 #CentOS 7 采用了 firewalld 防火墙 #查询是否开启27017端口: [root@localhost ~]# firewall-cmd --query-port=27017/tcp no #开启27017端口: [root@localhost ~]# firewall-cmd --add-port=27017/tcp success


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3