Mysql 从 5.6 换成了 8.0.25, jdbc 连接失败了。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mohulai
V2EX    问与答

Mysql 从 5.6 换成了 8.0.25, jdbc 连接失败了。

  •  
  •   mohulai 2021-07-09 13:07:24 +08:00 3553 次点击
    这是一个创建于 1560 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写的一个 SSM 的小项目,抽风想升级一下 Mysql 。
    结果报错。

    ERROR [RMI TCP Connection(3)-127.0.0.1] - init datasource error, url: jdbc:mysql://localhost:3306/cloudplatform?useUnicode=true&characterEncoding=utf8
    java.sql.SQLException: Unknown system variable 'tx_isolation'。

    搜了各种论坛都说是 jdbc 驱动版本低,mysql-connector-java 更新到 8.0 就可以,从 CSDN 到 StackOverflow 全是这个说法,可我更新后还是报错。

    换回 5.6 一点问题没有,可我犯病了就是不想换,折腾一天了
    25 条回复    2021-07-12 18:10:07 +08:00
    AllenHua
        1
    AllenHua  
       2021-07-09 13:23:21 +08:00
    顶一下帖。我昨天也是装了 8.0,然后用我常用的 navicat 连接,无法连接

    MySQL Error: Client does not support authentication protocol requested by server

    从 csdn 到 stackoverflow 和各种英文网页,尝试了都没能解决。我知道是 mysql8.0 更改了认证方式,但是按照网上的说法,没一个靠谱的……
    AllenHua
        2
    AllenHua  
       2021-07-09 13:23:59 +08:00
    用 datagrip 就正常连接,后面装了 5.7,使用 navicat 连接就正常了……
    AllenHua
        3
    AllenHua  
       2021-07-09 13:24:36 +08:00
    @AllenHua #2 mysql8.0 用 datagrip 连接正常。
    c978R77Le1z2f8u9
        4
    c978R77Le1z2f8u9  
       2021-07-09 13:27:18 +08:00
    8.0 的验证方法变了,IDENTIFIED WITH mysql_native_password 就行
    shiny
        5
    shiny  
       2021-07-09 13:27:28 +08:00
    偷懒方法就是初始化数据库的时候使用原来的验证方式
    [mysqld]
    default_authentication_plugin=mysql_native_password
    AlkTTT
        6
    AlkTTT  
       2021-07-09 13:38:06 +08:00
    @AllenHua navicat 版本低了,升个新版就可以了
    AlkTTT
        7
    AlkTTT  
       2021-07-09 13:39:07 +08:00
    driver-class-name: com.mysql.cj.jdbc.Driver,这个换了吗
    AllenHua
        8
    AllenHua  
       2021-07-09 13:51:39 +08:00
    @AlkTTT #6 navicat 11.0.9 企业版

    mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘New root password’;

    MySQL 8 默认使用了新的密码验证插件:caching_sha2_password

    比如这篇文章: https://zhuanlan.zhihu.com/p/36087723

    是 navicat 版本过低的原因? mysql 改了,也重启了,使用 navicat 11.0.9 企业版 登录还是无法登录,报错如下

    > 1251 Client does not support authentication protocol requested by server; consider upgrading MySQL client
    AllenHua
        9
    AllenHua  
       2021-07-09 13:53:43 +08:00
    @AlkTTT #7 没有换,我等会试试。谢谢

    MySQL 8.0 以上版本的数据库连接有所不同:com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver 。https://www.runoob.com/java/java-mysql-connect.html
    AllenHua
        10
    AllenHua  
       2021-07-09 14:02:26 +08:00
    @AlkTTT #7 navicat 还是不行。驱动只是在 Java 这边改,我给误会了。还是未能解决问题 [捂脸]

    难道 navicat 连接 mysql/mariadb 数据库可以指定驱动程序吗
    mohulai
        11
    mohulai  
    OP
       2021-07-09 14:22:06 +08:00
    @AlkTTT #7 这个地方我搜到过,换了,连玄学的换时区都加上了,也没用
    xsm1890
        12
    xsm1890  
       2021-07-09 14:26:30 +08:00
    java.sql.SQLException: Unknown system variable 'tx_isolation'。 这么大个报错。。
    AllenHua
        13
    AllenHua  
       2021-07-09 14:27:28 +08:00
    @AlexPUBLIC #4
    @shiny #5
    @AlkTTT #6

    我换了 navicat 15,使用 mysql_native_password 验证的方式,连接 mysql 8 成功了。还就是 navicat 版本的问题。

    @mohulai 对楼主说声抱歉,占用了你的帖子的资源。

    楼主也看看驱动问题 MySQL 8.0 以上版本的数据库连接有所不同:com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver 。https://www.runoob. com/java/java-mysql-connect.html
    xsm1890
        14
    xsm1890  
       2021-07-09 14:27:51 +08:00
    @@tx_isolation is deprecated and will be removed in a future release.pleas use @@transaction_isolation instead
    cslive
        15
    cslive  
       2021-07-09 14:30:48 +08:00
    ?serverTimezOne=UTC&useSSL=false&autoRecOnnect=true&tinyInt1isBit=false&useUnicode=true&characterEncoding=utf8 加上试试,自己就是这么用得
    mohulai
        16
    mohulai  
    OP
       2021-07-09 14:41:45 +08:00
    @xsm1890 #14 Java 连接里面没有这些内容啊,是要在 mysql 的命令行里改吗?刚用 mysql,不太熟。
    xsm1890
        17
    xsm1890  
       2021-07-09 15:04:18 +08:00
    @mohulai 不是啊,这个是数据库事务隔离级别的参数。版本间写法不一样了而已 ,这是报错的根本原因。参数写在驱动里面,升级驱动版本就能解决
    mohulai
        18
    mohulai  
    OP
       2021-07-09 15:09:46 +08:00
    @shiny #5 我看了我的 Mysql my.ini 文件 default_authentication_plugin=mysql_native_password 这条一直都在
    mohulai
        19
    mohulai  
    OP
       2021-07-09 15:12:22 +08:00
    @AlexPUBLIC #4 老哥这是加在哪里的? my.ini 里默认就是 mysql_native_password 。是因为 Java 的框架改了认证方式?
    mohulai
        20
    mohulai  
    OP
       2021-07-09 15:13:45 +08:00
    @xsm1890 #17 我一开始就升级了驱动版本啊,没有用
    HDMItoDP
        21
    HDMItoDP  
       2021-07-09 15:17:30 +08:00
    用 navicat15 试试,这个我一直用来连接 8.0,没问题的
    hk1937
        22
    hk1937  
       2021-07-09 18:46:44 +08:00
    楼主能加个微请教下技术问题吗 ?小白~
    c978R77Le1z2f8u9
        23
    c978R77Le1z2f8u9  
       2021-07-10 05:06:05 +08:00
    @mohulai 我是用的 python,sql8 命令行里改认证:ALTER USER 'root'@'localhost'
    IDENTIFIED WITH mysql_native_password
    BY 'password';
    mohulai
        24
    mohulai  
    OP
       2021-07-12 18:04:13 +08:00
    @hk1937 #22 你看我问出这种问题不像小白么
    hk1937
        25
    hk1937  
       2021-07-12 18:10:07 +08:00
    @mohulai 巧了 俺也小白
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     890 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 20:06 PVG 04:06 LAX 13:06 JFK 16:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86