DataGrip 连接 MySQL8.0+(方法已失效)

原创:转载请标明出处:
https://blog.csdn.net/ming2316780/article/details/84105495
本文出自:【Golang_Jerry的博客】

以下方法已失效。新版本DataGrip已完美支持连接MySQL 8.0+

使用DataGrip连接MySQL8.0

因为MySQL8.0在登录验证上采用新的密码验证方式 caching_sha2_password ,所有默认的连接MySQL方法在DataGrip上已经不再适用。

!在使用本方法连接之前,需要将root用户的访问host改为 %

修改root用户的访问权限

//登录
mysql -u root -p
//登录数据库后
mysql> use mysql;
mysql> update user set host='%' where user='root';
//然后再查看
mysql> select host,user from user;
//刷新权限
mysql> FLUSH PRIVILEGES;

修改后如图所示:
在这里插入图片描述

1、去MySQL官网下载MySQL8.0的连接驱动

<
<think>我们正在解决DataGrip连接MySQL8.0时出现的错误。根据常见问题,连接错误可能由多种原因引起,包括但不限于:驱动问题、连接参数配置错误、MySQL服务器配置问题(如身份认证插件)等。参考引用[1]中提到MySQL8.0安装教程,其中可能包含有关MySQL8.0默认身份认证插件的信息(从MySQL8.0开始,默认的身份认证插件是caching_sha2_password,而旧版本是mysql_native_password)。许多客户端(包括旧版本的驱动)可能还不支持新的认证方式,因此需要调整。另外,引用[2]是关于CentOS7通过yum安装MySQL8.0的步骤,可能涉及到服务器的配置。引用[3]是关于SQL语句中避免笛卡尔积的,与当前问题关系不大。因此,我们重点考虑以下解决方案:1.**检查MySQL用户认证插件**:MySQL8.0默认使用caching_sha2_password,而DataGrip可能使用的是较旧的驱动(如mysql-connector-java5.x)不支持该插件。解决方案可以是更改用户的认证插件为mysql_native_password,或者更新驱动到支持新认证插件的版本(如mysql-connector-java8.0以上)。2.**检查驱动**:在DataGrip中,确保使用了正确的MySQL驱动版本(推荐使用8.0以上的驱动)。3.**检查连接参数**:确保连接URL、端口、用户名和密码正确。4.**检查MySQL服务器是否允许远程连接**(如果连接的是远程服务器):可能需要修改MySQL的bind-address或授权远程访问。5.**防火墙设置**:确保防火墙开放了MySQL的端口(默认3306)。下面我们逐步说明解决方案:###解决方案####步骤1:检查MySQL用户认证插件登录MySQL服务器,执行以下SQL查询当前用户的认证插件:```sqlSELECTuser,host,pluginFROMmysql.user;```如果看到root用户(或其他你使用的用户)的插件是`caching_sha2_password`,而你的驱动不支持,则有两种选择:**选择一(推荐更新驱动)**:在DataGrip中更新驱动8.0以上版本(如mysql-connector-java-8.0.xx.jar)。**选择二(修改认证插件)**:将用户的认证插件改为`mysql_native_password`:```sqlALTERUSER'用户名'@'主机名'IDENTIFIEDWITHmysql_native_passwordBY'你的密码';FLUSHPRIVILEGES;```####步骤2:在DataGrip中配置正确的驱动1.打开DataGrip,在数据库窗口点击“+”->“数据源”->“MySQL”。2.连接设置中,点击“驱动”旁边的“+”号,添加新的驱动。3.驱动文件中,删除旧的驱动(如果有),然后添加下载的mysql-connector-java-8.0.xx.jar。4.选择新添加的驱动,然后填写连接信息(主机、端口、用户、密码、数据库等)。5.测试连接。####步骤3:检查连接参数确保主机名(localhost或IP地址)、端口(默认3306)、数据库名、用户名和密码正确无误。####步骤4:检查MySQL服务器配置-**远程访问**:如果连接的是远程服务器,确保MySQL配置允许远程连接。检查MySQL配置文件(如my.ini或my.cnf)中的`bind-address`。如果设置为`127.0.0.1`,则只能本地连接。可以将其改为`0.0.0.0`(监听所有接口)或注释掉,然后重启MySQL。-**用户权限**:确保连接用户具有从远程主机连接的权限。例如:```sqlCREATEUSER'用户名'@'%'IDENTIFIEDBY'密码';GRANTALLPRIVILEGESON*.*TO'用户名'@'%';FLUSHPRIVILEGES;```####步骤5:检查防火墙如果服务器有防火墙,确保开放了MySQL端口(默认3306)。在CentOS7中可以使用以下命令:```bashsudofirewall-cmd--permanent--add-port=3306/tcpsudofirewall-cmd--reload```按照以上步骤逐一排查,通常可以解决连接问题。###相关问题§§相关问题§§1.如何下载并安装MySQLConnector/J8.0驱动?2.MySQL8.0中,如何查看和修改用户的认证插件?3.DataGrip连接其他类型的数据库(如PostgreSQL)是否也有类似问题?4.如何配置MySQL服务器允许远程连接?</think>### DataGrip 连接 MySQL 8.0 出错解决方案 #### 常见错误原因及解决方法: 1. **驱动不兼容问题** MySQL 8.0 默认使用 `caching_sha2_password` 认证插件,而旧版驱动(如 MySQL Connector/J 5.x)不支持该插件。 **解决方案**: - 在 DataGrip 中升级驱动: ```plaintext 数据源设置 → 驱动MySQL → 添加最新版 mysql-connector-java-8.0.xx.jar ``` - 或修改 MySQL 用户认证方式(需数据库权限): ```sql ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '密码'; FLUSH PRIVILEGES; ``` 2. **连接参数配置错误** **关键配置项**: - URL 格式:`jdbc:mysql://主机:端口/数据库?参数` - 必须参数: ```plaintext serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true ``` **示例**: ``` jdbc:mysql://localhost:3306/testdb?serverTimezone=Asia/Shanghai&useSSL=false ``` 3. **防火墙/权限问题** - 检查 MySQL 是否允许远程连接: ```sql SELECT host, user FROM mysql.user; -- 查看访问权限 ``` ```sql GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码'; -- 授权远程访问 ``` - 开放防火墙端口(默认 3306): ```bash sudo firewall-cmd --add-port=3306/tcp --permanent # CentOS 示例[^2] ``` 4. **SSL 连接问题** 若出现 `SSL handshake` 错误: - 在连接 URL 添加 `useSSL=false` - 或配置有效证书: ```plaintext jdbc:mysql://host:3306/db?useSSL=true&requireSSL=true&trustCertificateKeyStoreUrl=file:path/to/keystore ``` #### 完整配置流程: 1. **下载正确驱动** 从 [MySQL 官网](https://dev.mysql.com/downloads/connector/j/) 获取最新版 Connector/J 8.0。 2. **DataGrip 设置** - 新建数据源 → 选择 MySQL - 驱动选择:`MySQL 8.0` 类型 - 填写主机、端口、数据库名 - URL 添加参数:`serverTimezone=Asia/Shanghai&useSSL=false` - 测试连接 ✅ 3. **MySQL 服务端检查** - 验证服务运行状态: ```bash sudo systemctl status mysqld # CentOS 示例[^2] ``` - 确认 `bind-address` 配置(在 `my.cnf` 中): ```ini bind-address = 0.0.0.0 # 允许所有IP访问 ``` > **注意**:MySQL 8.0 安装时需记录初始密码,忘记密码可通过 `mysqld_safe --skip-grant-tables` 重置[^1]。 #### 典型错误处理: - **Public Key Retrieval 错误**: 在 URL 添加 `allowPublicKeyRetrieval=true` - **时区错误**: 确保 URL 包含 `serverTimezone=Asia/Shanghai` - **驱动 Class 未找到**: 检查驱动 JAR 是否已正确添加到 DataGrip 驱动
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值