Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MySQL 8.4 LTS compatibility tracking #1923

Open
petecooper opened this issue May 8, 2024 · 5 comments
Open

MySQL 8.4 LTS compatibility tracking #1923

petecooper opened this issue May 8, 2024 · 5 comments
Assignees
Labels
Milestone

Comments

@petecooper
Copy link
Member

MySQL 8.4 LTS is now GA: https://dev.mysql.com/doc/relnotes/mysql/8.4/en/

It is likely that hosting providers will deploy MySQL in due course, so we need to make sure where we stand regarding Textpattern compatibility. More info on support here: https://www.mysql.com/support/supportedplatforms/database.html

I'll make some time in the coming weeks for some outline testing, it's a good reason for me to finally work out how to compile it from source, anyway.

@petecooper petecooper self-assigned this May 8, 2024
@petecooper petecooper added this to the v4.9 milestone May 8, 2024
@Bloke
Copy link
Member

Bloke commented May 9, 2024

Nice one, thank you. Of the big ticket items, the main thing that might hurt us is the password authentication.

See A cautionary tale for SQL statements we may need to advise users to run, or we may need to offer as part of the 'change password' feature to ensure account passwords are updated cleanly.

I'm a little unclear as to how I, as an admin, will now log into mysql from the command line, given they intimate that from 8.4 the mysql -u username -p no longer works, unless you power up the server with the native pluggable authentication switch on. Maybe that method of logging in still works but will only succeed if the password is migrated to caching_sha2_password first?

As usual, the docs are fairly impenetrable and unclear on whether there is now no way to log into 8.4 from the command line without some other form of authentication system in place (passwordless? tokens? mysql_config_editor?) or if it's simply a case that the mechanism of using -u -p still works, but the password itself will fail unless the hashing scheme is first altered.

@petecooper petecooper pinned this issue May 9, 2024
@petecooper
Copy link
Member Author

petecooper commented May 9, 2024

I'm a little unclear as to how I, as an admin, will now log into mysql from the command line, given they intimate that from 8.4 the mysql -u username -p no longer works, unless you power up the server with the native pluggable authentication switch on.

Using the default encryption option…

Screenshot 2024-05-09 at 20 24 36

…straight in:

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.4.0 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW VARIABLES LIKE "%version%";
+-----------------------------+------------------------------+
| Variable_name               | Value                        |
+-----------------------------+------------------------------+
| admin_tls_version           | TLSv1.2,TLSv1.3              |
| explain_json_format_version | 1                            |
| immediate_server_version    | 999999                       |
| innodb_version              | 8.4.0                        |
| original_server_version     | 999999                       |
| protocol_version            | 10                           |
| replica_type_conversions    |                              |
| slave_type_conversions      |                              |
| tls_version                 | TLSv1.2,TLSv1.3              |
| version                     | 8.4.0                        |
| version_comment             | MySQL Community Server - GPL |
| version_compile_machine     | x86_64                       |
| version_compile_os          | Linux                        |
| version_compile_zlib        | 1.2.13                       |
+-----------------------------+------------------------------+
14 rows in set (0.01 sec)

mysql> 

Remote connection works just fine with SequelAce - same route as MySQL 8.0 in that respect.

Using the legacy auth method, it breaks:

Setting up mysql-community-server (8.4.0-1debian12) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
dpkg: error processing package mysql-community-server (--configure):
 installed mysql-community-server package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-community-server (= 8.4.0-1debian12); however:
  Package mysql-community-server is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for libc-bin (2.36-9+deb12u7) ...
Errors were encountered while processing:
 mysql-community-server
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

…and doesn't create the socket, so when I try to connect it (expectedly) bombs out:

$ mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

NTS

  • fix legacy auth as outlined above

@petecooper
Copy link
Member Author

It lives! Textpattern 4.8.8 on MySQL 8.4.0 + PHP 8.3:

Textpattern version: 4.8.8 (a5969b336c096d872a7ecab9ee25914b)
Last update: 2024-05-09 19:55:20
Site URL: mysql84stronk.textpattern.co
Admin URL: mysql84stronk.textpattern.co/textpattern
Document root: /var/www/servers/textpattern.co/mysql84stronk/live
$path_to_site: /var/www/servers/textpattern.co/mysql84stronk/live
Textpattern path: /var/www/servers/textpattern.co/mysql84stronk/live/textpattern
Article URL pattern: messy
Production status: testing
Temporary directory path: /tmp
PHP version: 8.3.7
GD Graphics Library: 2.3.3; Supported formats: GIF, JPEG, PNG, WebP, AVIF.
Intl extension: 8.3.7
Multibyte String extension: 8.3.7
Server time zone: UTC
Server local time: 2024-05-09 20:00:29
Daylight Saving Time enabled?: 0
Automatically adjust Daylight Saving Time setting?: 0
Time zone (GMT offset in seconds):  (+3600)
MySQL: 8.4.0 (MySQL Community Server - GPL) 
Database server time: 2024-05-09 20:00:29
Database server time offset: 0 s
Database server time zone: SYSTEM
Database session time zone: SYSTEM
Locale: C
Site / Admin language: en / en
Web server: nginx/1.25.5
PHP server API: fpm-fcgi
PHP SSL version: OpenSSL 3.0.11 19 Sep 2023
RFC 2616 headers: 0
Server OS: Linux 6.1.0-21-amd64
Admin-side theme: hive 4.8.8

@petecooper
Copy link
Member Author

First pass on a vanilla Textpattern dev with debugging enabled works fine - no visible warnings or errors when viewing pages.

@petecooper
Copy link
Member Author

@Bloke - Here's a more user-friendly précis of MySQL from a Percona point of view: https://www.percona.com/blog/mysql-8-4-first-peek/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants