MySQL 8 was released recently (to this writing) and of course that means people are going to start using it. Since I have seen a couple posts on the forums with people using MySQL 8 I decided to fire up a new VM and install the following:
- OS: Windows 2012 R2
- Webserver: IIS 8
- MySQL 8.0.12
- PHP 5.6.31
note: PHP 5.6 is still the recommended version of PHP for osTicket until 1.11 is released. You should not have this problem if you are running PHP 7.1.16+ or PHP 7.2.4+ but since osTicket does not support those versions yet.
After checking to make sure that: IIS was serving pages and PHP was working in IIS it was time to download and install osTicket. The new website downloader is neat and allows you to download a languages and plugins together which can be a time saver. As a reminder always install osTicket with out any language packs and then add your desired language packs.
Running the installer resulted in the following error:
Database Connection information `Unabled to connect to MySQL Server: Server sent charset unknown to the client.` Please report to the devs
To fix this you will need to locate and edit your MySQL configuration file (my.cnf or my.ini). Since this is a new MySQL 8 installation under windows it is at: C:\ProgramData\MySQL\MySQL Server 8.0\my.ini. Once you located the file locate # character-set-server=. Directly after it add the line:character-set-server=utf8
Next you will need to restart MySQL. You might be able to do this with MySQL WorkBench or services.msc. My server had some patches that installed so I just restarted the server for the patches to finish.
Running the installer again of course resulted in another error message:
Database connection information `Unable to connect to MySQL Server: The server requested authentication method unknown to the client`
Starting with MySQL 8.0.4, the default authentication plugin for MySQL server was changed from mysql_native_password to caching_sha2_password. There are two things that you need to do in MySQL to fix this. First: if you are running an older version of PHP (pre 7.1.16) you will need to set default_authentication_plugin=mysql_native_password in my.cnf. Restart the server.
Next you will need to edit the user account. I could not do this in the most recent version of MySQL WorkBench using the ui. You can do this one of two ways:
1. delete and recreate the user. Make sure authentication is set to ‘Standard’. Make sure you give the same permissions back that the user had.
2. run the following SQL Query (edit this for your user)
alter user 'username'@'localhost' identified with mysql_native_password by 'password';
After doing this the installer ran fine.