mysql配置允许远程连接(如何设置mysql 允许远程连接)

本文目录
- 如何设置mysql 允许远程连接
- 如何远程访问MySQL数据库详解
- 如何开启MySQL远程访问权限 允许远程连接
- 如何配置mysql的root用户允许远程登录
- 如何让mysql数据库允许被远程连接访问
- 如何让mysql数据库允许被远程连接访问就是从其他的电脑连接我的电脑上的mysql
如何设置mysql 允许远程连接
mysql无法连接总结
1 先弄清楚mysql.user表的host和user列的含义,host列表示ip地址或者hostname,它和user列组成联合主键,host列的约束关系:比如172.%即代表只能172开头的网段才能登 陆该db;%表示任何网段都能登陆;同一user下如果既有172.%和%的host,那就取并集,即任何网段都能登陆
2 密码错误,一般报1045错误
一般是以下误操作
2.0 首先明确一点,grant方式新建用户后其实不用flush privileges,而flush privileges刷新全新只对后续的连接有效,对本次连接无效
2.1 可能是update user表的方式修改了密码以后,忘记flush privileges,这时并没有生效,断开重连后沿用的还是旧密码
2.2 可能是update user表的方式修改了密码以后,忘记flush privileges,这时并没有生效,db重启以后必须用新密码才能登陆
2.3 就是简单的修改了密码,忘记了新密码,一般可以用skip-grant-tables的方式免密码登陆,修改回来,这个方法比较简单,但是需要重启db;
在云服务器中,一般都会保存一个管理账户密码,总是被客户随意修改导致备份,监控等失败,可以通过以下方法在线修改回来,无须重启db
2.3.1 copy 用户库的user表相关的文件到自己测试库
2.3.2 在测试库更改用户密码或添加用户
2.3.3 把user表相关的文件copy到用户库
2.3.4 kill -SIGHUP 用户的mysqld进程
3 是否设置了禁用dns解析,即设置了skip_name_resolve却还是用主机名称连接
4 是否设置了绑定ip访问,即设置了bind-address却还是用其他ip连接
5 确认是否是网络问题,一般直接ping ip的方式确定,这时先解决网络问题
6 确认是否能够telnet通对应ip的端口,如果不通的话,一般是以下原因
6.1 检查磁盘空间是否已经满了,即磁盘不足,这时应该无法telnet
6.2 检查mysqld进程是否存活,是否正好处于关闭中或者启动中,看错误日志即可,这时无法telnet
6.3 检查防火墙,是否开通了对应的db port
6.4 mysqld oom内存不足重启,这时会有短暂的时间连接不上,通过查看mysqld进程的启动时间或系统日志搜索oom关键字 /var/log/message
7 确认是否连接数打满了,一般报too many connections
8 确认是否是本地端口耗尽,这时一般报错 ERROR 2003 (HY000): Can’t connect to MySQL server on ’192.168.0.10’ (99),注意最后括号的数字是99,解决方法一般是增加 local_port的范围 , /proc/sys/net/ipv4/ip_local_port_range 这里的值,两者相减 就是目前的范围
9 还有一种情况,比如敲的登陆命令为mysql -uxx -pxx -hxxx database1,这时相当于连接到mysql后还有一个use database1的操作,如果卡住了一般就是卡在那不动,也不提示错误,这时需要注释掉database1登录进去查看是哪个线程卡住了它,或者本身这个db下表太多,本来就慢
如何远程访问MySQL数据库详解
默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件。
一、修改/etc/mysql/my.conf
找到bind-address = 127.0.0.1这一行
改为bind-address = 0.0.0.0即可
二、为需要远程登录的用户赋予权限
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、改表法。
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql》use mysql;
mysql》update user set host = ’%’ where user = ’root’;
mysql》select host, user from user;
2、授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’IDENTIFIED BY ’mypassword’ WI
TH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.3’IDENTIFIED BY
’mypassword’ WITH GRANT OPTION;
我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 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身份登录啦。
如何配置mysql的root用户允许远程登录
基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限。下面是基本的步骤:
1、登录到MySQL中,为root进行远程访问的授权,执行下面的命令:
mysql》 GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
mysql》 flush privileges;
第一句中"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:
GRANT ALL PRIVILEGES ON *.* TO root@"172.168.193.25" IDENTIFIED BY "root";
第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
2、修改/etc/mysql/my.cnf,需要root用户权限。找到文件中的:
view plain copy print?
bind-address = 127.0.0.1
将其注释掉,保存。
3、重新启动MySQL服务器。执行下面的几条命令即可:
# /usr/bin/mysqladmin -u root -p shutdown
# /usr/bin/mysqld_safe &
如果mysqladmin和mysql_safe不在/usr/bin目录中,可以通过whereis命令查找,例如:
# whereis mysqladmin
mysqladmin: /usr/bin/mysqladmin /usr/share/man/man1/mysqladmin.1.gz
执行完上面的三步后,就可以通过远程机器连接了数据库了。
如何让mysql数据库允许被远程连接访问
一、连接远程数据库:
1、显示密码
如:MySQL 连接远程数据库(192.168.5.116),端口“3306”,用户名为“root”,密码“123456”
C:/》mysql -h 192.168.5.116 -P 3306 -u root -p123456
2、隐藏密码
如:MySQL 连接本地数据库,用户名为“root”,
C:/》mysql -h localhost -u root -p
Enter password:
二、配置mysql允许远程链接
默认情况下,mysql帐号不允许从远程登陆,只能在localhost登录。本文提供了二种方法设置mysql可以通过远程主机进行连接。
一、改表法
在localhost登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改称"%"
例如:
#mysql -u root -p
Enter password:
……
mysql》
mysql》update user set host = ’%’ where user = ’root’;
mysql》select host, user from user;
二、授权法
例如: 你想myuser使用mypassword(密码)从任何主机连接到mysql服务器的话。
mysql》GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
mysql》GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.3’IDENTIFIED BY
’mypassword’ WITH GRANT OPTION;
mysql》FLUSH PRIVILEGES
使修改生效,就可以了
常见问题:
1、在采用法二授权法之后,无法在本地登录mysql(如:#mysql -u root -p -h 192.168.5.116
Enter password:
ERROR 1045 (28000): Access denied for user ’root’@’loadb116’ (using password: YES)
上例中loadb116是主机名.
解决方法:
1、这时可以使用:mysql -u root -p 登录,进入到mysql后。
mysql》 grant all privileges on *.* to ’root’@’loadb116’
identified by ’123456’ with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql》 flush privileges;
Query OK, 0 rows affected (0.00 sec)
2、在本地使用ip地址登录
# mysql -u root -p -h 192.168.5.116
Enter password:
Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 60
Server version: 5.1.45 MySQL Community Server (GPL)
Type ’help;’ or ’/h’ for help. Type ’/c’ to clear the buffer.
mysql》
如何让mysql数据库允许被远程连接访问就是从其他的电脑连接我的电脑上的mysql
第一:更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’。
或者新加条记录,“host” 项为要访问的ip地址,并授权。重启mysql服务。
第二:在系统防火墙添加例外端口:3306,并允许例外。
错误提示:
ERROR 1130: Host ’192.168.1.3’ is not allowed to connect to this MySQL server
的解决方法:
1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
1.mysql -u root -pvmware
mysql》use mysql;
mysql》update user set host = ’%’ where user = ’root’;
mysql》select host, user from user;
2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.3’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;
3.在window自带的防火墙里的例外添加3306端口
总结:
mysql -u root -p
mysql》use mysql;
mysql》select ’host’ from user where user=’root’;
mysql》update user set host = ’%’ where user =’root’;
mysql》flush privileges;
mysql》select ’host’ from user where user=’root’;
第一句是以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
重起mysql服务即可完成。

更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40






