Using MySQL 8.0 with Gateway 10

MySQL 8.0 is required for Gateway version 10.0+. This section helps you understand the overall process to install or upgrade to Gateway 10.0 and configure MySQL 8.0 server. The links provided in this process refer to detailed documentation and the MySQL 8.0 specific-instructions are listed again in this section for your quick reference.
2
Update to the Sample Docker Compose Deployment File
The sample docker-compose.yml file includes the following in the
mysql-server
section:
# command: # - "--character-set-server=utf8mb3" # - "--innodb_log_buffer_size=32M" # - "--innodb_log_file_size=80M" # - "--max_allowed_packet=20M" # - "--log-bin-trust-function-creators=1 # - "--default-authentication-plugin=mysql_native_password"
Ensure that you have the following lines under
mysql-server
section in the docker-compose.yml file to successfully run Container Gateway with MySQL 8.0:
# - "--character-set-server=utf8mb3" # - "--log-bin-trust-function-creators=1" [or] - "--disable-log-bin" # - "--default-authentication-plugin=mysql_native_password"
Manage JDBC Connections
To update details of a JDBC connection, edit the JDBC connection properties and specify the following parameter in the
JDBC URL
field to allow the public key retrieval from the server for securing the password transportation between client and server:
allowPublicKeyRetrieval=true
If you have already created users in MySQL, add the following line in
/etc/my.cnf
of MySQL server, restart MySQL, and then recreate the users:
default-authentication-plugin=mysql_native_password
If you need to create users in MySQL, add the above line in
/etc/my.cnf
of MySQL server, restart MySQL, and then create the users.
Known Issue: MySQL 8.0 Upgrade from 9.4 to 10.0
Issue:
MySQL 8.0 removed NO_AUTO_CREATE_USER SQL mode(MySQL issue). When we take a backup from MySQL 5.7 and upgrade to MySQL 8.0, we get an issue related to 'sql_mode' that can't be set to the value of 'NO_AUTO_CREATE_USER'.
Workaround:
Use the following command to remove 'NO_AUTO_CREATE_USER' in dump file by simple space:
sed -i "s/NO_AUTO_CREATE_USER//g" mysql_dump.sql