远程连接MySQL

本文解决在VMware环境下Linux中的MySQL通过DBVisualizer访问时出现的权限拒绝和通讯链接失败的问题。首先使用GRANT命令为指定IP授权,然后确保MySQL服务正常运行并关闭防火墙。
VMware中跑了Linux,并装了MySQL,在外面用DBVisulizer访问时发生若干问题:
1.在DBVisulizer中配置好Mysql的连接后,点击connect,报出以下错误:
An error occurred while establishing the connection:

Long Message:
Access denied for user 'root'@'192.168.1.2' to database 'mysql'

Details:
   Type: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
   Error Code: 1044
   SQL State: 42000
在网上搜索解决问题办法,原来是没有为访问MySql的IP授权,所以192.168.1.2该IP地址不进访问数据库。
 利用grant为IP地址授权,使其能顺利访问数据库:
语法:grant 权限 on 数据库对象 to 用户
例: grant all on *.* to root@'192.168.1.2' identified by 'abcdefg';
2. 解决此问题后,本以为可以顺利连接数据库了,结果又有新情况了。。。
Long Message:
Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

Details:
   Type: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
   SQL State: 08S01
老办法,google之,开始把问题定位在超时,但网上说的情况与我的不同,果断换方向。
Conmmunications link failure 说的是连接错误,这种问题,要从以下几个方面考虑:
1.MySQL服务是否启动?
2.MySQL所处机器防火墙是否关闭?
3.检查代码,包括URL,用户名,密码,等是否写错。
果断发现防火墙没有关闭。service iptables stop;
这次终于连结成功了。 :idea: :arrow:
Tips:
  1.在填写URL时,MySQL的默认端口号:3306,为了确认,可以用命令查看:
mysql> show variables like 'port';
2.查看MySql服务是否正在运行:
查看mysql服务状态:service mysql status;
启动mysql服务:service mysql start;
停止mysql服务:service mysql stop;
要实现远程连接 MySQL,可按以下方法操作: ### 检查 MySQL 服务配置 确保 MySQL 服务允许远程连接。编辑 MySQL 配置文件(通常为 `my.cnf` 或 `my.ini`),找到 `bind-address` 项,将其值设置为 `0.0.0.0` 以允许所有 IP 地址连接,示例如下: ```plaintext [mysqld] bind-address = 0.0.0.0 ``` 修改完成后,重启 MySQL 服务。在 Linux 系统中,使用如下命令: ```bash sudo systemctl restart mysql ``` ### 创建允许远程连接的用户 登录 MySQL 服务器,使用以下 SQL 语句创建一个新用户并授予其远程连接权限: ```sql -- 创建新用户 CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'; -- 授予该用户所有权限 GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%'; -- 刷新权限 FLUSH PRIVILEGES; ``` 上述代码中,`'newuser'` 为新用户名,`'password'` 为用户密码,`'%'` 表示允许从任何 IP 地址连接。 ### 开放 MySQL 端口 确保服务器的防火墙开放了 MySQL 默认端口 3306。在 Linux 系统中,使用 `firewalld` 防火墙,可执行以下命令: ```bash sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload ``` ### 使用客户端工具进行远程连接 可以使用多种客户端工具进行远程连接,以下是使用 `mysql` 命令行工具和 Navicat 工具的示例: #### 使用 `mysql` 命令行工具 在本地终端中,使用以下命令连接远程 MySQL 服务器: ```bash mysql -h remote_server_ip -u newuser -p ``` 其中,`remote_server_ip` 是远程 MySQL 服务器的 IP 地址,`newuser` 是之前创建的允许远程连接的用户名。执行该命令后,输入用户密码即可完成连接。 #### 使用 Navicat 工具 1. 打开 Navicat 软件,点击“连接” -> “MySQL”。 2. 在弹出的“连接设置”窗口中,填写以下信息: - **主机**:远程 MySQL 服务器的 IP 地址。 - **端口**:MySQL 服务端口,默认为 3306。 - **用户名**:之前创建的允许远程连接的用户名。 - **密码**:该用户的密码。 3. 点击“测试连接”按钮,若连接成功,点击“确定”保存连接配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值