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
Error Method changeUser not available for MySQL server due to Bug #83472" #96
Comments
|
Strange this "Azure Database for MariaDB servers" version. They probably force the version to '5.6.42.0'.
yes and no : When connecting, Server annonce to connector the capabilities of the server. This permits to fill performance schema informations and permit to identify clients from server for lots of use case like detect if some client use huge ressources "mysql" package doesn't enable this capability, and doesn't send anything regarding to that to server. The problem is that when this capability has been enable, mysql has an issue when changind user. An issue is open and verified MySQL side regarding this : https://bugs.mysql.com/bug.php?id=83472 MariaDB server doesn't have this issue. That's why connector check if server is a MariaDB server before using changeUser. Simple workaround If you have acces to server global variables, it would be nice to check that "server" variable and then add '-MariaDB' to it. |
|
thinking more about that, even with wrong "server" version, connector detection must detect correctly mariadb server. Could you send a connection logs with server This will permit to identify why server type identification doesn't works |
|
@rusher thanks for your response. As requested plus connection.info output. One other thing to note, I tested this on Azure MySql and got a similar issue so went back to AWS and tested it and its all fine. Seems to be something Azure are doing but no idea what. ConnectionInformation {threadId: 65410, status: 2, serverVersion: Object, serverCapabilities: 4172559, seed: Buffer(20), …} |
|
Something else to add. Not sure if its relevant as its "After" connection is established. https://docs.microsoft.com/en-us/azure/mariadb/concepts-limits#current-known-issues
|
|
This is very strange, because initial handshake packet : here "0F AB" indicate some server capability. Since 10.2, MariaDB has removed this capability, permitting to drivers to identify server has a mariadb server, and it is enable. You confirm this debug logs comes from a MariaDB server ? Connector identify server type properly : it does normally with Server version or capability, but here server version is 5.6.42.0 and capability is wrong ... |
|
ahh, found this : https://docs.microsoft.com/en-us/azure/mariadb/concepts-supported-versions
So information that driver use are wrong |
|
@rusher Yes 100% it was a MariaDB. The issue is that SELECT VERSION() on a 10.3 version MariaDB instance returns 8.0.15. Nothing to do with MariaDB. Will that matter? |
…ECT @@Version see #96 Azure is using a proxy that will return a MySQL handshake not reflecting real server. from https://docs.microsoft.com/en-us/azure/mariadb/concepts-supported-versions : Note: In the service, a gateway is used to redirect the connections to server instances. After the connection is established, the MySQL client displays the version of MariaDB set in the gateway, not the actual version running on your MariaDB server instance. To determine the version of your MariaDB server instance, use the SELECT VERSION(); command. A new option `forceVersionCheck` has to be added to permit issuing a new SELECT @@Version to retrieve the correct server version. Connector will then act according to that server version.
|
version 2.2.0 is release with a new option This permit to avoid bad information that comes from proxy. could you take a look and check if this completly solve azure issue ? |
|
closing since issue fixed |
I am calling the following Node code against a MariaDB v10.2 instance running under "Azure Database for MariaDB servers". I am using package version 2.1.5.
But when it executes I am getting the following error in the catch block.
Error: (conn=65412, no: 45003, SQLState: 0A000) method changeUser not available for MySQL server due to Bug #83472
code:"ER_MYSQL_CHANGE_USER_BUG"
errno:45003
fatal:false
message:"(conn=65412, no: 45003, SQLState: 0A000) method changeUser not available for MySQL server due to Bug #83472"
sqlState:"0A000"
stack:"Error: (conn=65412, no: 45003, SQLState: 0A000) method changeUser not available for MySQL server due to Bug #83472\n at Object.module.exports.createError (...\node_modules\mariadb\lib\misc\errors.js:55:10)\n at Connection.changeUser (...\node_modules\mariadb\lib\connection.js:101:16)\n at ...\dist\services\Database\MariaDb.js:89:41\n at processTicksAndRejections (internal/process/task_queues.js:89:5)"
proto:Error {constructor: }
Whats going on here? This works perfectly well when I use "mysql" package against MySQL 8.
EDIT: Interestingly
connection.serverVersion()returns "5.6.42.0"EDIT1: But SELECT VERSION(); return { 'VERSION()': '10.2.29-MariaDB-log' }
Regards
Andrew
The text was updated successfully, but these errors were encountered: