mysql开启远程连接

### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60007, active 0
### The error may exist in file [D:\project\pedicure-server-manage\target\baking_backStage\WEB-INF\classes\net\$51zhiyuan\dev\yunzuliao_backStage\mapper\xml\ShopMapper.xml]
### The error may involve net.$51zhiyuan.dev.yunzuliao_backStage.mapper.ShopMapper.selectShopId
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60007, active 0] with root cause
 java.net.ConnectException: Connection timed out: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at java.net.Socket.connect(Socket.java:538)
	at java.net.Socket.<init>(Socket.java:434)
	at java.net.Socket.<init>(Socket.java:244)
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:258)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:305)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2490)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2527)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2309)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:419)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
	at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844)

在本地的idea链接外网的数据库的时候,出现了如上的错误,究其原因,就是外网的数据库,没有开远程连接,下面就介绍如何开启mysql的远程连接
1.打开cmd,启动mysql
mysql -u root -p

2.查看user表
mysql> use mysql;
Database changed
mysql> select host,user,authentication_string from user;
这里有两个点要注意
(1)在进行任何对user表的操作之前,都要先写 use mysql,否则就会报错
在这里插入图片描述
(2)select语句最后的“;”很重要不能缺少,否则语句将不会执行
(3)MySQL自5.7以后,移除了password字段,改为 authentication_string,也就是说,如果你的mysql是5.7之前的版本那就
mysql> select host,user,password from user;
如果是5.7之后的版本,那就按照上边的写法,否则数据库不认得“password”这个字段
在这里插入图片描述

3.通过授权法实现远程授权链接
mysql> use mysql;
Database changed

mysql> grant all privileges on . to root@’%’ identified by “password”;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
在这里插入图片描述
到此就完美解决啦

要在 Linux 系统中 **开启 MySQL远程连接**,需要完成以下几项配置: --- ## ✅ 一、修改 MySQL 配置文件(允许监听所有 IP) ### 1. 编辑 MySQL 配置文件(通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`): ```bash sudo vi /etc/my.cnf ``` ### 2. 找到 `[mysqld]` 段,并修改或添加如下内容: ```ini [mysqld] bind-address = 0.0.0.0 ``` > `bind-address = 0.0.0.0` 表示允许监听所有网络接口。 --- ## ✅ 二、创建/授权远程访问的用户 登录 MySQL 命令行: ```bash mysql -u root -p ``` ### 1. 创建一个允许从任意主机连接的用户: ```sql CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_password'; ``` ### 2. 授予该用户权限(例如所有数据库和表): ```sql GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; ``` ### 3. 刷新权限: ```sql FLUSH PRIVILEGES; ``` > ✅ 如果只想允许特定 IP 连接,可以将 `'%'` 替换为具体 IP,如 `'192.168.1.100'`。 --- ## ✅ 三、开放防火墙端口(默认是 3306) ### CentOS/RHEL 使用 `firewalld`: ```bash sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload ``` ### Ubuntu 使用 `ufw`: ```bash sudo ufw allow 3306/tcp sudo ufw reload ``` --- ## ✅ 四、重启 MySQL 服务使配置生效 ```bash sudo systemctl restart mysqld ``` 或者根据你的系统使用不同的命令,比如: ```bash sudo service mysql restart ``` --- ## ✅ 五、测试远程连接 你可以使用如下命令在远程机器上测试是否能连接: ```bash telnet your_server_ip 3306 ``` 或者使用客户端工具(如 Navicat、DBeaver、MySQL Workbench)进行连接。 --- ## ❗注意事项: - 确保 MySQL 用户权限设置正确,不要轻易给 `root@%` 开放权限。 - 生产环境中建议限制访问 IP 范围,避免安全风险。 - 如果你使用的是云服务器(如阿里云、腾讯云),还需要在平台的安全组中开放 3306 端口。 --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值