无法远程登入MySQL数据库的几种解决办法
远程数据库连接权限以及MySQL 'root'@'localhost'无法登录
然后#mysql -u root -p xxxx,登录成功!
查了一下mysql -h localhost和mysql -h 127.0.0.1的区别,通过localhost连接到mysql是使用UNIX socket,而通过127.0.0.1连接到mysql是使用TCP/IP。看看状态:
mysql -h localhost > status
-A FORWARD -i lo -j ACCEPT
-A FORWARD -i eth0 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
1、打开防火墙配置文件
vi /etc/sysconfig/iptables
2、增加下面一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
3、重启防火墙
service iptables restart
COMMIT
mysql -u root Байду номын сангаасp
2、修改mysql库的user表,将host项,从localhost改为%。%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将localhost改为192.168.1.123,这表示只允许局域网的192.168.1.123这个ip远程访问mysql。
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
Centos7下无法远程连接mysql数据库的原因与解决
Centos7下⽆法远程连接mysql数据库的原因与解决前⾔最近在⼯作中遇到⼀个问题,发现在Centos7系统下怎么也不能远程连接mysql,通过查找相关的资料,终于解决了,以下⽅法就是我在碰到远程连接不到Mysql数据库后试过的⽅法,最终也是解决掉了问题。
所以总结⼀下分享出来,供同样遇到这个问题的朋友们参考学习,下⾯话不多说了,来⼀起看看详细的介绍吧。
有两种原因数据库没有授权服务器防⽕墙没有开放3306端⼝⼀、数据库没有授权对于mysql数据库没有授权,只需要⽤⼀条命令就可以了。
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;//远程连接数据库的时候需要输⼊⽤户名和密码⽤户名:root密码:123456指点ip:%代表所有Ip,此处也可以输⼊Ip来指定Ip输⼊后使修改⽣效还需要下⾯的语句mysql>FLUSH PRIVILEGES;⼆、服务器防⽕墙没有开放3306端⼝centos 有两种防⽕墙 FirewallD和iptables防⽕墙centos7 使⽤的是FirewallD防⽕墙。
FirewallD 是 iptables 的前端控制器,⽤于实现持久的⽹络流量规则。
它提供命令⾏和图形界⾯,在⼤多数 Linux 发⾏版的仓库中都有。
与直接控制 iptables 相⽐,使⽤ FirewallD 有两个主要区别:1.FirewallD 使⽤区域和服务⽽不是链式规则。
2.它动态管理规则集,允许更新规则⽽不破坏现有会话和连接。
FirewallD 是 iptables 的⼀个封装,可以让你更容易地管理 iptables 规则 - 它并不是 iptables 的替代品。
虽然 iptables 命令仍可⽤于 FirewallD,但建议使⽤ FirewallD 时仅使⽤ FirewallD 命令。
sqlyog for MySQL远程连接的时候报错mysql 1130的解决方法
通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法今天在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到。
错误代码是1130,ERROR 1130: Host X.X.X.X is not allowed to connect to this MySQL server猜想是无法给远程连接的用户权限问题。
结果这样子操作mysql库,即可解决。
在远程服务器登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。
下面是用SQL语句解决问题:mysql -u root -pmysql;use mysql;mysql;select host from user where user='root' and host='lcoalhost;mysql;update user set host = '%' where user ='root' and host='lcoalhost';mysql;flush privileges;mysql;select host from user where user='root';第一句是以权限用户root登录第二句:选择mysql库第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址第五句:刷新MySQL的系统权限相关表第六句:再重新查看user表时,有修改。
重起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';
mysql 开启远程连接的三种方法
方法一样给mysql开启远程连接功能?首先链接本机的mysql(用ssh登录终端,输入如下命令):mysql -uroot -p输入密码登陆进去后,输入如下的语句,执行。
grant all privileges on *.* to ‘user‘@’%‘identified by ‘password‘with grant option; 其中,user是用户名,mysql默认的是root ,password是密码自己设置。
%表示任意主机。
这样就允许远程任意一台主机访问了。
方法二开启mysql远程功能方法如下:进入mysql,创建一个新用户itbc:格式:grant 权限on 数据库教程名.表名用户@登录主机identified by "用户密码";grant select,update,insert,delete on *.* to itbc@192.168.88.234 identified by "itbc1234";查看结果,执行:use mysql;select host,user,password from user;可以看到在user表中已有刚才创建的itbc用户。
host字段表示登录的主机,其值可以用ip,也可用主机名,将host字段的值改为%就表示在任何客户端机器上能以itbc用户登录到mysql服务器,建议在开发时设为%。
update user set host = ’%’where user = ’itbc’;方法三mysql默认是不可以通过远程机器访问的,通过下面的配置可以开启远程访问.我的mysql环境是ubuntu+mysql51.修改/etc/mysql/my.conf,修改bind-address,指定为本机实际ip地址,你的my.con修改完大概是如下的样子[mysqld]## * basic settings#default-character-set=utf8default-storage-engine=innodbbind-address = 192.168.1.107user = mysqlpid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockport = 3306basedir = /usrdatadir = /var/lib/mysqltmpdir = /tmplanguage = /usr/share/mysql/englishskip-external-locking2.用root登陆mysql执行如下命令grant all on sonardb.* to sonar@'%' identified by '123456';grant all on sonardb.* to sonar@localhost identified by '123456';sonardb替换为你想访问的数据库名,sonar是你的想使用的用户名,123456替换为你的密码,这样就开启了远程访问功能.。
使用MySQL进行远程访问与连接配置
使用MySQL进行远程访问与连接配置导语:MySQL作为一种常用的关系型数据库管理系统,提供了强大的功能和灵活的配置选项。
本文将重点讨论如何通过MySQL进行远程访问与连接配置,为读者提供相关知识与实践指导。
一、MySQL远程访问的概念与原理MySQL默认情况下只允许本地连接,即只能通过本地主机访问MySQL数据库。
这是出于安全考虑,以防止未经授权的访问和潜在的安全风险。
但在某些场景下,我们需要通过远程连接来访问MySQL数据库,比如多服务器环境下的数据共享,或者开发人员需要从自己的工作站连接到远程服务器进行开发和调试。
为了实现MySQL的远程访问,我们需要进行一些配置。
首先,需要在MySQL服务器上进行相应的配置,允许远程连接。
其次,需要在客户端上配置连接参数,以便正确地连接到远程MySQL服务器。
二、MySQL服务器远程连接配置1. 修改bind-address参数在MySQL服务器上,打开mysql配置文件(一般为/etc/mysql/mysql.conf.d/f),找到bind-address参数所在行,并将其值修改为0.0.0.0。
这将使MySQL服务器绑定到所有可用的网络接口,并允许来自任何IP地址的远程连接。
2. 授权远程访问打开MySQL服务器的命令行客户端,输入管理员权限的用户名和密码登录。
执行以下命令来创建一个新的MySQL用户并授予其远程访问的权限:```CREATE USER '用户名'@'远程IP地址' IDENTIFIED BY '密码';GRANT ALL PRIVILEGES ON *.* TO '用户名'@'远程IP地址' WITH GRANT OPTION;FLUSH PRIVILEGES;```其中,'用户名'和'密码'分别是你想要创建的新用户的用户名和密码,'远程IP地址'是允许访问的远程客户端的IP地址。
解决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的时候遗忘了密码,可以进⾏以下操作。
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”这⾏代码找到。
