Description\n-----------\n\nThe mysql_native_password authentication plugin is the default authentication plugin that will be used for an account created when no authentication plugin is explicitly mentioned and old_passwords=0 is set. It uses the password hashing algorithm introduced in MySQL 4.1, which is also used by the PASSWORD() function when old_passwords=0 is set. This hashing algorithm is based on SHA-1.\n\nIt is not recommended to use the mysql_native_password authentication plugin for new installations that require high password security. If someone is able to both listen to the connection protocol and get a copy of the mysql.user table, then the person would be able to use this information to connect to the MariaDB server. The ed25519 authentication plugin is a more modern authentication plugin that provides simple password authentication using a more secure algorithm.\n\nInstalling the Plugin\n\nThe mysql_native_password authentication plugin is statically linked into the server, so no installation is necessary.\n\nCreating Users\n\nThe easiest way to create a user account with the mysql_native_password authentication plugin is to make sure that old_passwords=0 is set, and then create a user account via CREATE USER that does not specify an authentication plugin, but does specify a password via the IDENTIFIED BY clause:\n\n``sql\nSET old_passwords=0;\nCREATE USER username@hostname IDENTIFIED BY 'mariadb';\n`\n\nIf SQL_MODE does not have NO_AUTO_CREATE_USER set, then you can also create the user account via GRANT:\n\n`sql\nSET old_passwords=0;\nGRANT SELECT ON db. TO username@hostname IDENTIFIED BY 'mariadb';\n`\n\nYou can also create the user account by providing a password hash via the IDENTIFIED BY PASSWORD clause, and MariaDB will validate whether the password hash is one that is compatible with mysql_native_password:\n\n`sql\nSET old_passwords=0;\n\nSELECT PASSWORD('mariadb');\n+-------------------------------------------+\n| PASSWORD('mariadb')                       |\n+-------------------------------------------+\n| 54958E764CE10E50764C2EECBB71D01F08549980 |\n+-------------------------------------------+\n\nCREATE USER username@hostname\n  IDENTIFIED BY PASSWORD '54958E764CE10E50764C2EECBB71D01F08549980';\n`\n\nSimilar to all other authentication plugins, you could also specify the name of the plugin in the IDENTIFIED VIA clause while providing the password hash as the USING clause:\n\n`sql\nCREATE USER username@hostname\n  IDENTIFIED VIA mysql_native_password USING '54958E764CE10E50764C2EECBB71D01F08549980';\n`\n\nChanging User Passwords\n\nYou can change a user account's password with the SET PASSWORD statement while providing the plain-text password as an argument to the PASSWORD() function:\n\n`sql\nSET PASSWORD =  PASSWORD('new_secret')\n`\n\nYou can also change the user account's password with the ALTER USER statement. You would have to make sure that old_passwords=0 is set, and then you would have to specify a password via the IDENTIFIED BY clause:\n\n`sql\nSET old_passwords=0;\nALTER USER username@hostname IDENTIFIED BY 'new_secret';\n`\n\nClient Authentication Plugins\n\nFor clients that use the libmysqlclient or MariaDB Connector/C libraries, MariaDB provides one client authentication plugin that is compatible with the mysql_native_password authentication plugin:\n\n* mysql_native_password\n\nWhen connecting with a client or utility to a server as a user account that authenticates with the mysql_native_password authentication plugin, you may need to tell the client where to find the relevant client authentication plugin by specifying the --plugin-dir option:\n\n`bash\nmysql --plugin-dir=/usr/local/mysql/lib64/mysql/plugin --user=alice\n`\n\nHowever, the mysql_native_password client authentication plugin is generally statically linked into client libraries like libmysqlclient or MariaDB Connector/C, so this is not usually necessary.\n\nmysql_native_password\n\nThe mysql_native_password client authentication plugin hashes the password before sending it to the server.\n\nSupport in Client Libraries\n\nThe mysql_native_password authentication plugin is one of the conventional authentication plugins, so all client libraries should support it.\n\nKnown Old Issues (Only Relevant for Old Installations)\n\nMismatches Between Password and authentication_string Columns\n\nFor compatibility reasons, the mysql_native_password authentication plugin tries to read the password hash from both the Password and authentication_string columns in the mysql.user table. This has caused issues in the past if one of the columns had a different value than the other.\n\nCREATE USER, ALTER USER, GRANT, and SET PASSWORD set the Password and authentication_string columns in the mysql.user table whenever an account's password is changed.\n\nCREATE USER, ALTER USER, GRANT, and SET PASSWORD do not set the Password and authentication_string` columns in the mysql.user table whenever an account's password is changed.\n\nURL: https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-mysql_native_password