From d9f3f67ebdd0f1476cc0c42c9306629b0d1eadc5 Mon Sep 17 00:00:00 2001 From: zhoujingbnu Date: Mon, 4 Sep 2023 10:11:11 +0800 Subject: [PATCH] =?UTF-8?q?Mysql=E5=8D=8F=E8=AE=AE=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E5=A6=82=C3=A5=E5=85=A5=E9=97=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...71\346\200\247\345\205\245\351\227\250.md" | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 "app/zh/blogs/zhoujingbnu/2023-09-01-Mysql\345\215\217\350\256\256\345\205\274\345\256\271\347\211\271\346\200\247\345\205\245\351\227\250.md" diff --git "a/app/zh/blogs/zhoujingbnu/2023-09-01-Mysql\345\215\217\350\256\256\345\205\274\345\256\271\347\211\271\346\200\247\345\205\245\351\227\250.md" "b/app/zh/blogs/zhoujingbnu/2023-09-01-Mysql\345\215\217\350\256\256\345\205\274\345\256\271\347\211\271\346\200\247\345\205\245\351\227\250.md" new file mode 100644 index 00000000..a2585d8a --- /dev/null +++ "b/app/zh/blogs/zhoujingbnu/2023-09-01-Mysql\345\215\217\350\256\256\345\205\274\345\256\271\347\211\271\346\200\247\345\205\245\351\227\250.md" @@ -0,0 +1,96 @@ +**Mysql协议兼容特性入门 + +# 1.简介 + + 为了进一步减少Mysql程序迁移到opengauss的工作量。openGauss 5.1.0 引入了Mysql协议兼容特性,本文对该特性限制及使用方式做个简单介绍。 + +# 2.特性实现简介 + + 根据协议扩展接口定义,实现支持mysql协议的扩展dolphin_protocol_config;通过在dolphin插件的_PG_init中判断是否创建监听端口fd,同时映射该fd至dolphin_protocol_config中; 这样通过监听fd建立连接的网络请求,将会按照mysql数据库协议实现的方式进行处理。 + +# 3.使用限制 + +1. Mysql客户端版本号需要是5.7.X +2. Mysql-jdbc driver版本需要是5.1.47 + +# 4.使用方式 + +1.postgres.conf中增加协议兼容插件配置 + +``` +enable_dolphin_proto=on +dolphin_server_port=3307 +dolphin.default_database_name = 'mysql_test' +``` + +2.gsql连接openGauss,创建B库,设置登录用户名密码 + +``` +openGauss=# create database mysql_test dbcompatibility='B'; +CREATE DATABASE +openGauss=# \c mysql_test +Non-SSL connection (SSL connection is recommended when requiring high-security) +You are now connected to database "mysql_test" as user "zhoujing". +mysql_test=# create schema mysql_test; +CREATE SCHEMA +mysql_test=# create user adminusr sysadmin password 'Cmcc@123!'; +CREATE ROLE +mysql_test=# select set_native_password('adminusr','Cmcc@123!'); + set_native_password +------------------------------------------ + 324e9019e7e4181b70321f5844c4c761cd1ae725 +(1 row) +``` + +3.使用mysql-client连接openGauss的Mysql协议兼容端口。在其中可以访问到磐维数据库mysql_test库(B库),中mysql_test schema下的表。注意mysql中的database对应openGauss中的schema + +``` +mysql -h127.0.0.1 -uadminusr -pCmcc@123! -P3307 -Dmysql_test +``` + +4.使用jdbc方式连接,连接串类似如下形式: + +``` +String URL = "jdbc:mysql://ip-address:dolphin_server_port/mysql_database?&useSSL=false"; +``` + +示例代码如下: + +``` + public static Connection GetConnection(String username, String passwd) { + String driver = "com.mysql.jdbc.Driver"; + String sourceURL = "jdbc:mysql://localhost:3307/mysql_test?&useSSL=false"; + Connection conn = null; + try { + //创建数据库连接。 + conn = DriverManager.getConnection(sourceURL, username, passwd); + System.out.println("Connection succeed!"); + } catch (Exception e) { + e.printStackTrace(); + } + return conn; + } + +``` + +# 5.常见问题定位方法 + +当出现连接不上问题时可以从以下几方面定位: + +1. 版本是否正确:jdbc驱动目前仅支持5.1.47, 客户端目前仅支持5.7.X +2. 端口是否正常:可以通过netstat -antp命令查看端口状态,正常状态如下: + +``` +[root@d202a05cb1c3 ~]# netstat -antp|grep 3307 +tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 5784/gaussdb +tcp6 0 0 :::3307 :::* LISTEN 5784/gaussdb +``` + +若端口未启动,可检查是否存在端口冲突,postgres.conf参数是否配置生效。 + +3.是否已经为登录用户设置了密码 + +``` +select set_native_password('adminusr','Cmcc@123!'); +``` + -- Gitee