content_image/840832.jpg
Required credentials for clients that connect to the MySQL server can include a password. This section describes how to assign passwords for MySQL accounts. 

MySQL stores credentials in the user  table in the mysql  system database. Operations that assign or modify passwords are permitted only to users with the CREATE USER  privilege, or, alternatively, privileges for the mysql  database ( INSERT  privilege to create new accounts, UPDATE  privilege to modify existing accounts). If the read_only  system variable is enabled, use of account-modification statements such as CREATE USER  or ALTER USER  additionally requires the CONNECTION_ADMIN  privilege (or the deprecated SUPER  privilege). 

The discussion here summarizes syntax only for the most common password-assignment statements. For complete details on other possibilities, see Section 13.7.1.3, “CREATE USER Statement” , Section 13.7.1.1, “ALTER USER Statement” , and Section 13.7.1.10, “SET PASSWORD Statement” . 

MySQL uses plugins to perform client authentication; see Section 6.2.17, “Pluggable Authentication” . In password-assigning statements, the authentication plugin associated with an account performs any hashing required of a cleartext password specified. This enables MySQL to obfuscate passwords prior to storing them in the mysql.user  system table. For the statements described here, MySQL automatically hashes the password specified. There are also syntax for CREATE USER  and ALTER USER  that permits hashed values to be specified literally. For details, see the descriptions of those statements. 

To assign a password when you create a new account, use CREATE USER  and include an IDENTIFIED BY  clause: 

CREATE USER ’jeffrey’@’localhost’ IDENTIFIED BY ’ password ’; 

CREATE USER  also supports syntax for specifying the account authentication plugin. See Section 13.7.1.3, “CREATE USER Statement” . 

To assign or change a password for an existing account, use the ALTER USER  statement with an IDENTIFIED BY  clause: 

ALTER USER ’jeffrey’@’localhost’ IDENTIFIED BY ’ password ’; 

If you are not connected as an anonymous user, you can change your own password without naming your own account literally: 

ALTER USER USER() IDENTIFIED BY ’ password ’; 

To change an account password from the command line, use the mysqladmin  command: 

mysqladmin -u user_name  -h host_name  password " password " 

The account for which this command sets the password is the one with a row in the mysql.user  system table that matches user_name  in the User  column and the client host from which you connect  in the Host column. 

<img src='content_image/840832.jpg'>

## Warning 

Setting a password using mysqladmin  should be considered insecure . On some systems, your password becomes visible to system status programs such as ps that may be invoked by other users to display command lines. MySQL clients typically overwrite the command-line password argument with zeros during their initialization sequence. However, there is still a brief interval during which the value is visible. Also, on some systems this overwriting strategy is ineffective and the 

