mysql远程连接失败解决方法
mysql无法远程连接10038错误的坑(阿里云ecs)
mysql⽆法远程连接10038错误的坑(阿⾥云ecs)为什么有这篇博客 昨天购买了阿⾥云的ecs服务器,通过xshell安装了docker,然后在docker环境中安装mysql,版本是8.0.21。
开始⼀切顺利,在服务器环境中能正常执⾏各种命令。
结果在使⽤navicat远程连接服务器mysql时卡住了,以下就是从卡住到解决的过程,希望能帮助到同样遇到这个问题的⼈。
问题根源 先说结论,由于是阿⾥云新实例,控制台未设置规则,远程⽆法访问3306这个端⼝,导致了客户端远程连接出现10038这个错误。
排查过程mysql登录先确定是否能正常在服务器上登录mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 9Server version: 8.0.21 MySQL Community Server - GPL很显然登录成功,能正常操作show databases;这样的命令mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.00 sec)创建数据库然后尝试创建数据库mysql> create database test;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys || test |+--------------------+5 rows in set (0.00 sec)mysql> use test;Database changedmysql> show tables;Empty set (0.00 sec)⾛到这⼀步也没有⽤任何问题root⽤户远程登录是否授权mysql> use mysql;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> select User,authentication_string,Host from user;+------------------+------------------------------------------------------------------------+-----------+| User | authentication_string | Host |+------------------+------------------------------------------------------------------------+-----------+| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | % || schema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost || root | $A$005$byLhU'ict_qEg}A4pO6IUms8wmp1NNgUG2a.27n8HIPq..p5zMeDrtqF3 | localhost |+------------------+------------------------------------------------------------------------+-----------+5 rows in set (0.00 sec)通过图表看到有2个root账户,⼀个本地连接localhost ,⼀个%代表可以远程连接。
远程连接数据库时出现问题及解答
1.远程连接数据库时出现如图所示错误2.打开cmd窗口输入telnet 192.168.1.250 弹出,然后输入telnet 192.168.1.250 3306 (3306为远程数据库端口号)(telnet IP PORT 此命令为连接远程服务器)3.出现此问题的原因是服务器的3306端口号被防火墙阻止了,不允许访问。
所以要登录服务器端开放3306的端口。
(以下以WIN7为例)进入“控制面板\所有控制面板项\Windows 防火墙”点击“高级设置”进入“高级安全windows 防火墙”页面。
选择“入站规则”右击,弹出菜单选择“新建规则”如图选择“端口”点击“下一步”在如下这里选择允许访问的网络,点击“下一步”页面的名称是用来标识这个端口的作用的,如下图点击“完成”,开放防火墙端口成功。
开放完端口再次连接数据库,弹出错,这个错误是因为权限的问题,登录服务器端,新增一个用户,给开放权限即可。
5.增加允许远程连接MySQL 用户并授权。
1)首先以root 帐户登陆MySQL在Windows 主机中点击开始菜单,运行,输入“cmd”,进入控制台,MySQL 的bin 目录下,然后输入下面的命:123456 为root 用户的密码。
2)创建远程登陆用户并授权上面的语句表示将discuz 数据库的所有权限授权给ted 这个用户,允许ted 用户在123.123.123.123 这个IP 进行远程登陆,并设置ted 用户的密码为123456 。
下面逐一分析所有的参数:all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。
discuz.* 表示上面的权限是针对于哪个表的,discuz 指的是数据库,后面的* 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。
解决远程连接mysql错误1130代码的方法
说明所连接的用户帐号没有远程连接的权限,只能在本机(localhost)登录。
需更改 mysql 数据库里的 user表里的 host项
把localhost改称%
首先按下面的步骤登录Mysql服务器
登录mysql需要切换到dos下的mysql的bin目录,进行如下操作:
语法格式:mysql -h host_name -u user_name -p password (本机的话-h 和host_name可省)
mysql>quit
退出后会回到DOS正常的提示符状态,此时可以通过远程连接Mysql了!
========================================
MySQL 用户帐号的修改 error 1130
2007-09-07 09:18
MySQL上的一个数据库要备份,装了个MySQL的gui工具。打开"MySQL Administrator"工具,填好用户名和密码却登录不了,老是报这个错“ERROR 1130: Host 'lijuan-' is not allowed to connect to this MySQL server”。网上查了下,有这两个方法解决:
二、登录成功后可ysql;
mysql>update user set host = '%' where user ='root';
mysql>flush privileges;
mysql>select 'host','user' from user where user='root';
linux中MySQL本地可以连接,远程连接不上问题
linux中MySQL本地可以连接,远程连接不上问题1.⽹络或防⽕墙问题(1)检查⽹络直接ping你的远程服务器,ping 182.61.22.107,可以ping通说明⽹络没问题(2)看端⼝号3306是不是被防⽕墙挡住了,telnet 182.61.22.107 3306下图这样就是防⽕墙挡住了3306端⼝不允许访问配置防⽕墙,开启3306端⼝vi /etc/sysconfig/iptables //防⽕墙配置-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT //允许3306端⼝通过service iptables restart //重启防⽕墙配置如下:2.MySQL配置在你开启防⽕墙以后发现还是telnet失败,我去,报错如下:这⾥的原因是因为你的数据库只允许root⽤户在本地登录,你可以设置允许访问的⽤户跟地址(1)进⼊数据库查看⽤户表mysql -u root -p //登录数据库use mysql //进⼊mysql数据库select Host,User from user; //查看可以访问数据库的ip结果如下:(2)设置可以访问的ipupdate user set host='%' where host='localhost'; //允许所有访问flush privileges; //刷新⽣效当然也可以只允许⼀些ip访问,或者ip段访问:GRANT ALL PRIVILEGES ON *.* TO 'root'@'182.61.*.*' IDENTIFIED BY 'password' WITH GRANT OPTION; //允许182.61段在root账号登录。
MySQL远程连接不上的解决方法
MySQL远程连接不上的解决⽅法之前遇到过MySQL本地可以连接但是远程连不上的问题,没有记录,今天在云上新申请的服务器上⼜遇到这个问题,记录⼀下解决过程。
1.排除⽹络或防⽕墙问题先看是否能ping通远程服务器,ping 192.168.1.211,如果不可以就是⽹络问题。
然后,检查端⼝是否被防⽕墙挡住了,telnet 192.168.1.211 3306,如果连接失败,配置防⽕墙。
配置防⽕墙,开启3306端⼝vi /etc/sysconfig/iptables-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端⼝通过防⽕墙)/etc/init.d/iptables restart(重启防⽕墙使配置⽣效)2.检查MySQL配置如果开启了防⽕墙,telnet还是失败,通过netstat查看3306的端⼝状态:netstat -apn|grep 3306tcp6 0 0 127.0.0.1:3306 :::* LISTEN 13524/mysqld注意地⽅,这说明3306被绑定到了本地。
检查⼀下f的配置,这⾥可以配置绑定ip地址。
bind-address=addr不配置或者IP配置为0.0.0.0,表⽰监听所有客户端连接。
ps:我开启3306端⼝,并且检查MySQL配置之后,telent仍然失败,但是在本机telnet是ok的,再三确认了配置没有问题。
后来跟我们的ucloud账号管理员提了⼀下,才知道ucloud管理后台也需要开启3306端⼝,⽤云服务器的留意这个。
3.检查⽤户访问权限MySQL建⽤户的时候会指定⼀个host,默认是127.0.0.1/localhost,那么这个⽤户就只能本机访问,其它机器⽤这个⽤户帐号访问会提⽰没有权限,host改为%,表⽰允许所有机器访问。
最后,别忘了重启mysql使配置⽣效。
docker中安装的mysql无法远程连接问题解决
docker中安装的mysql⽆法远程连接问题解决
背景:
在ubuntu1804的docker中安装了mysql,版本是5.7.34。
因为有复杂的数据要插⼊到数据库中,所以从宿主机通过pycharm和DBeaver连接,但是⼀直报错:Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
解决⽅法分为两步⾛
第⼀步:
修改mysql配置⽂件中的bind_address
vim /etc/mysql/mysql.conf.d/f
数据库不能远程访问多半是因为绑定了本地地址127.0.0.1.
第⼆步:
开启⽤户的远程访问权限。
以root⽤户为例。
如果⽤户没有远程访问权限则即使数据库能远程访问但因为⽤户权限限制也会失败。
开启远程访问权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
强制刷新权限:
flush privileges;
完成这两步就可以远程访问到docker中的数据库了。
MySQL远程连接失败(错误码:2003)
MySQL远程连接失败(错误码:2003)
⼀环境信息
服务器系统:Ubuntu 18.04
服务器MySQL版本:14.14 Distrib 5.7.25
本地系统:Kali Linux
本地客户端:python3交互模式
本地开发环境:python(3.7.3),mysql-connector-python-8.0.15
假设:登录⽤户名为vsearch,密码为vsearchpasswd,MySQL连接端⼝3306
⼆问题描述
本地客户端及代码连接均失败:mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '192.168.1.20:3306' (111 Connection refused)
python连接MySQL代码
三解决问题
(1)远程登陆服务器,⽤“ps aux|grep mysql”命令查看,MySQL服务已启动:
(2)⽤"vim f"命令查看f⽂件(在MySQL安装⽬录下,我的位置是/etc/mysql/mysql.conf.d/f),修改其对应的值并重启MySQL。
对应内容如下:[mysqld]
bind-address = 0.0.0.0 # 表⽰允许任何主机登陆MySQL
port=3306 # 表⽰MySQL运⾏端⼝为3306
(3)重启mysql服务 service mysql restart (4)测试
成功!。
解决navicat远程连接mysql报错10038的问题
解决navicat远程连接mysql报错10038的问题⽬录⼀:本地防⽕墙问题⼆:服务器3306端⼝未打开navicat远程连接mysql报错10038⼀般由以下两个原因:⼀:本地防⽕墙问题在本地安装了mysql、navicat并打开了mysql服务的情况下,来设置防⽕墙。
⾸先右击或者点击⼊站规则,找到新建规则,点击。
点击端⼝。
在特定本地端⼝中填⼊3306.⼀直点击下⼀步。
这⾥可以给⼀个好分别的名称即可。
之前再尝试连接即可,若仍然不可以,可能是服务器⽅⾯的问题。
⼆:服务器3306端⼝未打开⾸先需要在安全组开放端⼝。
我这⾥使⽤的是阿⾥云服务器。
⾸先需要进⼊云服务器,找到安全组。
进⼊⾥⾯找到配置规则。
然后进⾏快速添加,添加3306端⼝即可。
之后同样在云服务器下再进⼊实例列表,点击远程连接,进⼊服务器终端。
然后在命令⾏输⼊firewall-cmd --query-port=3306/tcp若这⾥显⽰的是no,那么需要让防⽕墙开启3306端⼝:1.开启端⼝3306firewall-cmd --zone=public --add-port=3306/tcp --permanent2.重启防⽕墙firewall-cmd --reload查看已经开放的端⼝firewall-cmd --list-ports接着需要让mysql开启远程访问权限:1.登陆mysql (若遗忘数据库密码,往下看)mysql -u root -p2.设置访问地址(本⼈实际操作的时候并没有设置就可以连接成功了)如果你想允许⽤户root从ip为192.168.1.123的主机连接到mysql服务器,并使⽤root作为密码GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.123'IDENTIFIED BY 'password' WITH GRANT OPTION;3.刷新flush privileges;如果在上⾯第1步登陆mysql的时候遗忘了密码,可以进⾏以下操作。
远程连接MySQL数据库报错:isnotallowedtoconnecttothisMYS。。。
远程连接MySQL数据库报错:isnotallowedtoconnecttothisMYS。
1. 改表法。
可能是你的帐号不允许从远程登陆,只能在localhost。
这个时候只要在localhost的那台电脑,登⼊后,更改 "mysql" 数据库⾥的 "user"表⾥的 "host" 项,从"localhost"改称"%"mysql -u root -pmysql>use mysql;mysql>update user set host ='%'where user='root';mysql>select host, user from user; 注:个⼈觉得不太适⽤!【错误内容】:SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet', system error: 0【错产⽣经过】:链接MySQL时出现.【解决办法】:打开my.ini,找到[mysqld]项,在其后加⼊⼀句:skip-name-resolve,保存,重启mysql服务即可~以上就是解决MySQL Error (2013): Lost connection to MySQL server at waiting for initial communication packet的全⽂介绍,希望对您学习和使⽤数据库有所帮助.2. 授权法。
1)例如,你想myuser使⽤mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON*.*TO'myuser'@'%' IDENTIFIED BY'mypassword'WITH GRANT OPTION;FLUSH PRIVILEGES; 2)如果你想允许⽤户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使⽤mypassword作为密码GRANT ALL PRIVILEGES ON*.*TO'myuser'@'192.168.1.3' IDENTIFIED BY'mypassword'WITH GRANT OPTION;FLUSH PRIVILEGES; 3)如果你想允许⽤户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使⽤mypassword作为密码GRANT ALL PRIVILEGES ON dk.*TO'myuser'@'192.168.1.3' IDENTIFIED BY'mypassword'WITH GRANT OPTION;FLUSH PRIVILEGES; 我⽤的第⽅法1),最后执⾏⼀个语句 mysql>FLUSH RIVILEGES 使修改⽣效.就可以了 另外⼀种⽅法,不过我没有亲⾃试过的,在上找的,可以看⼀下. 在安装mysql的机器上运⾏:1、d:/mysql/bin/>mysql -h localhost -u root //这样应该可以进⼊MySQL服务器2、mysql>GRANT ALL PRIVILEGES ON*.*TO'root'@'%'WITH GRANT OPTION//赋予任何主机访问数据的权限3、mysql>FLUSH PRIVILEGES//修改⽣效4、mysql>EXIT//退出MySQL服务器 这样就可以在其它任何的主机上以root⾝份登录啦!。
Navicat出现无法远程连接MySql服务器问题的解决办法
Navicat出现⽆法远程连接MySql服务器问题的解决办法Navicat⽆法远程连接MySql服务器问题的解决⽅法写在前⾯:操作系统:中标麒麟4.0;数据库:MySQL5.7.26;JDK:采⽤中标麒麟系统⾃带的openjdk;客户端⼯具:Navicat;前置条件:MySQL服务安装完毕;情景:安装好mysql,本地访问正常,但同⼀个局域⽹内的机器都⽆法访问该服务器上的mysql数据库;原因:mysql默认是不可以通过远程机器访问的,只允许本地访问,通过下⾯的配置可以开启远程访问;排查思路:mysql设置远程访问主要从以下三个⽅⾯去检测:⾸先检查⽹络,两台计算机之间必须能ping通,这是基础;第⼆:检测3306端⼝,对于端⼝只允许本机访问,有两个地⽅启⽤,⼀个是mysql配置绑定本机地址,另⼀个就是防⽕墙启⽤3306;第三:mysql⽤户访问权限的问题。
根据思路逐⼀排查1.⽹络检测:ping mysql所在主机的ip地址看是否能ping通,如果能ping通,说明不是⽹络的问题;我的可以ping通,说明不是⽹络的问题;2.端⼝检测:检测3306端⼝:netstat -ntpl | grep 3306,如图:检测22端⼝:netstat -ntpl | grep 22,如图:综上可以看出22端⼝监听所有地址,⽽3306端⼝只监听了本地地址,所以远程⽆法访问。
对于端⼝只允许本机访问,有两个地⽅启⽤,⼀个是防⽕墙启⽤3306,另⼀个就是mysql配置绑定本机地址。
所以Navicat⽆法连接远程MySQL这个问题我们找到问题所在了,我们只需将3306端⼝允许远程访问即可;解决办法:⼀般情况下,我们只需要去修改/etc/mysql/f配置⽂件即可,将f配置⽂件中的bind-address=127.0.0.1改成bind-address=0.0.0.0,并且把skip-networking注释掉即可;但是我的f配置⽂件中并没有bind-address=127.0.0.1和skip-networking这两⾏代码,我就⾃⼰加上了bind-address=0.0.0.0这⾏代码,以为会好使,重启系统后,结果,并没有卵⽤再次检测3306端⼝,发现还是只允许本地访问,就在我百思不得其解的时候,配置⽂件中的⼀句注释引起了我的注意~此处有惊喜,问题马上就可以解决了 > . <然后我们再去看/etc/mysql/f配置⽂件,发现了⼀句话,如图:“从以下配置⽬录导⼊所有的以.cnf结尾的⽂件”,啧啧啧,有没有种恍然⼤悟的感觉?也就是说address=127.0.0.1这⾏配置没有在f配置⽂件中配置,可能在那两个⽬录下的某⼀个配置⽂件中配置了,所以我们就去找找看看呗,⽆论如何得把“address=127.0.0.1”这⾏代码找到。
远程连接mysql数据库失败:Can’tconnecttoMySQLserveron‘ro。。。
远程连接mysql数据库失败:Can’tconnecttoMySQLserveron‘ro。
##远程连接mysql数据库失败:Can’t connect to MySQL server on ‘root'(10038)的解决办法下⾯是⼀些解决⽅案在我使⽤的最新LNMP环境包的时候遇到的情况是防⽕墙iptables 阻⽌了外⽹IP访问3306我的解决⽅案是清除iptables规则解放3306清除已有iptables规则iptables -Fiptables -X(我本⼈执⾏到这⼀步就可以了)1、设置⽤户权限修改⽤户远程登录权限:⽐如想给⽤户root(密码:123456)设置从任何主机连接到mysql服务器:连接linux,登录数据库:# mysql -uroot -p# Enter password:******MySQL [(none)]> use use mysql;MySQL [(mysql)]> GRANT ALL PRIVILEGES ON *.* TO ’root‘@'%' IDENTIFIED BY ‘123456’ WITH GRANT OPTION;MySQL [(mysql)]> flush privileges;MySQL [(mysql)]> quit;报这个错误的话 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by "123456"' at line 1⽤下⾯这句create user root@'%' identified by '123456';grant all privileges on *.* to root@'%' with grant option;重启MySQL:# service mysqld restart2、检查防⽕墙有没有屏蔽掉3306端⼝。
MySQL数据库连接失败分析与解决方法
MySQL数据库连接失败分析与解决方法在开发和使用MySQL数据库的过程中,经常会遇到数据库连接失败的情况。
本文将从多个角度分析MySQL数据库连接失败的原因,并给出相应的解决方法。
希望能够帮助读者更好地理解和解决这个问题。
一、网络问题导致的连接失败在使用MySQL数据库时,最常见的连接失败原因之一是由于网络问题引起的。
网络问题可能包括硬件故障、网络拥堵、防火墙配置等。
当连接失败时,可以先确保网络连接是否正常。
可以通过ping命令或者使用其他网络工具来进行检测。
如果网络连接没有问题,那么就需要检查防火墙的配置。
防火墙可能会阻止MySQL数据库的连接请求。
可以通过关闭防火墙或者配置防火墙允许MySQL数据库连接的端口来解决这个问题。
二、数据库配置问题导致的连接失败数据库配置问题也是导致连接失败的常见原因之一。
在连接数据库时,需要提供正确的主机名、端口号、用户名和密码。
如果其中任何一个配置项错误,都会导致连接失败。
首先,需要确保主机名和端口号的配置正确。
可以通过在命令行中使用telnet命令来检查主机和端口的连接情况。
例如,可以使用命令"telnet hostname port"来检查与数据库服务器的连接是否正常。
其次,需要检查用户名和密码的配置是否正确。
可以通过在命令行中使用mysql命令来连接数据库,并提供正确的用户名和密码进行验证。
如果验证失败,则需要确保用户名和密码正确,并且具有连接数据库的权限。
三、MySQL服务器问题导致的连接失败除了网络问题和数据库配置问题外,MySQL服务器本身的问题也可能导致连接失败。
MySQL服务器问题可能包括数据库服务未启动、数据库服务崩溃等。
首先,需要检查数据库服务是否已启动。
可以通过在命令行中使用"ps -ef | grep mysql"命令来检查数据库服务是否正在运行。
如果数据库服务未启动,可以使用"service mysql start"命令来启动数据库服务。
MySQL中的连接异常和故障排查方法
MySQL中的连接异常和故障排查方法MySQL是一种开源的关系型数据库管理系统,被广泛应用于各种网站和应用程序中。
然而,在使用MySQL时,由于各种原因,经常会遇到连接异常和故障的情况,本文将探讨这些问题的原因和解决方法。
一、连接异常的原因1. 网络问题:连接数据库的客户端与数据库服务器之间的网络出现故障,如线路故障、网络拥堵等,都可能导致连接异常。
2. 数据库服务器故障:数据库服务器可能发生宕机、重启或者资源不足等问题,导致连接异常。
3. 数据库配置问题:数据库的配置文件中的参数设置不当,导致连接异常。
4. 用户访问权限不足:如果用户没有足够的权限访问数据库,将导致连接异常。
二、连接异常的解决方法1. 检查网络连接:首先,通过ping命令检查客户端与服务器之间的网络连通性。
如果出现连接超时或报错信息,说明网络存在问题。
可以尝试重新启动网络设备或者联系网络管理员解决问题。
2. 检查数据库服务器状态:通过登录到数据库服务器,可以使用命令"service mysql status"检查MySQL服务的运行状态。
如果服务没有启动,可以使用"service mysql start"命令启动服务。
如果服务正在运行但无法响应,可以查看日志文件以获取更多信息。
3. 检查数据库配置:MySQL的配置文件通常是f或者my.ini(Windows 下)文件。
可以检查文件中的参数设置,确保其与数据库服务器和应用程序的要求相匹配。
特别注意连接数、缓冲区大小等与连接相关的参数设置。
4. 检查用户权限:通过登录到MySQL数据库,使用"show grants for user"命令可以查看用户的权限。
如果用户没有足够的权限,可以使用"grant"命令给予其所需的权限。
三、故障排查方法1. 查看错误日志:当MySQL发生异常时,会将错误信息记录在错误日志文件中。
mysql解决无法远程连接
设置mysql远程连接root权限在远程连接mysql的时候应该都碰到过,root用户无法远程连接mysql,只可以本地连,对外拒绝连接。
需要建立一个允许远程登录的数据库帐户,这样才可以进行在远程操作数据库。
方法如下:默认情况下MYSQL数据库的系统数据库mysql系统表user内用户权限只提供localhost本机登陆;需要更改权限才能实现远程连接MYSQL数据库。
可以通过以下方式来确认:root#mysql -h localhost -uroot -pEnter password: ******Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 4 to server version: 4.0.20a-debugType ‘help;’or ‘\h’for help. Type ‘\c’to clear the buffer.mysql> use mysql; (此DB存放MySQL的各种配置信息)Database changedmysql> select host,user from user; (查看用户的权限情况)mysql> select host, user, password from user;+-----------+------+-------------------------------------------+| host | user | password |+-----------+------+-------------------------------------------+| localhost | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 || 127.0.0.1 | root | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 || localhost | | |+-----------+------+-------------------------------------------+4 rows in set (0.01 sec)由此可以看出,只能以localhost的主机方式访问。
解决mysql无法远程连接的问题
解决mysql⽆法远程连接的问题前⾔最近开发中遇到⼀个问题,mysql在服务器本地可以登录,但是远程通过3306端⼝却不可以。
这个问题困扰了我⼀周之久,终于在今天解决了。
在解决的过程中试了很多的⽅法,遂记录下来,希望能给⼤家⼀些提⽰。
排查错误位置客户端⽅⾯⾸先通过ping命令对服务器进⾏测试,如果ping不通,则是⽹络的问题,本⽂中没有涉及这类问题的解决。
如果能ping通,再测试端⼝有没有问题。
⾸先安装telnet, telnet是windows系统⾃带的,搜索"启动或关闭Windows功能",找telnet客户端,勾选即可启动。
在cmd中输⼊telnet {服务器IP} 3306, 如果不能正确连接,说明是端⼝设置的问题,再试试22端⼝有没有问题,如果也有问题,就是服务器整体的端⼝设置有问题,如果只有3306有问题,那么就是3306端⼝、mysql的设置问题,继续往下测试。
服务器⽅⾯针对只有3306端⼝不能连接的情况,有以下⼏种解决⽅法:1. 修改配置⽂件,开启对其他ip地址的监听输⼊命令netstat -ntpl |grep 3306和netstat -ntpl |grep 22, 查看端⼝的绑定情况正确情况下应为以下输出:如果3306只绑定的本地端⼝,就会出现和上图不⼀致的输出。
需要对其配置⽂件进⾏修改:sudo nano /etc/mysql/mysql.conf.d/f打开配置⽂件, 找到bind-address开头的⼀⾏,如果后⾯的ip地址是127.0.0.1,也就是服务器只会接收本地的连接请求,那么就需要改变此地址来指向外部的IP地址。
例如,可以改为:lc-messages-dir = /usr/share/mysqlskip-external-locking## Instead of skip-networking the default is now to listen only on# localhost which is more compatible and is not less secure.bind-address = 0.0.0.0如果你的mysql版本是MySQL 8+,那么f中可能不会包含bind-address这⼀⾏,应该像下⾯所⽰⽅法进⾏添加:[mysqld]pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockdatadir = /var/lib/mysqllog-error = /var/log/mysql/error.logbind-address = 0.0.0.0修改完成后,保存并退出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
今天搭建LAMP(Linux、apache、mysql、php)环境,由于mysql数据库和php不在同一台电脑上,apache连接mysql时报错。
查看mysql数据库下的user表
原来是mysql没有开启远程登录,只能在本地登录,由于对mysql不熟悉,上网找了写解决方法,update user set host=’%’ where user=’root’,但是执行这个操作之后,远程可以连接mysql 了,但是本地登录提示密码错误。
查看user表信息
发现本地登录用的是localhost,不需要密码
不输入密码直接登录,可以连接,证明自己的猜测是对的,但是show databases看不到之前的数据库。
原来是localhost没有权限导致的,看来直接update user set host=’%’ where user=’root’是不行的,更改其中的一个%为127.0.0.1试下
还是不行,如果将另一个%改回localhost,本地可以登录,
但是远程又访问不了了,该怎么办呢?看了下mysql官方的提示,原来这么简单,只需要一个grant语句就可以了。
grant all privilegesI on dbcenter.* to root@'%' identified by 'zhcw123';
执行flush privileges;使操作立即生效,查mysql数据库下的user表,原来是在user表里加了一条新记录,而不是直接update。
困扰两天的问题终于解决啦!。