Ubuntu系統使用apt安裝的mysql在安裝過程中沒有給出輸入密碼的選項,而是給了一個默認的用戶名和密碼,那只能根據默認用戶名和密碼登錄mysql后修改用戶名和密碼了.
查看默認用戶名和密碼
//打開文件 /etc/mysql/debian.cnf查看默認用戶名和密碼 [client] host = localhost user = debian-sys-maint password = 24j7HYTEqgPv0Ozg socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = 24j7HYTEqgPv0Ozg socket = /var/run/mysqld/mysqld.sock
根據默認的用戶名和密碼登錄mysql(輸入命令后把上面的密碼粘貼進去)
$ mysql -udebian-sys-maint -p
在這一步可能會報如下的一個錯誤
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
遇到這個錯誤修改mysql配置文件將套接字指定為mysql默認分配的就行了,修改/etc/my.cnf
,將socket
的值改為/var/run/mysqld/mysqld.sock
即可.
修改用戶名和密碼
登錄mysql之后執行如下語句
mysql> update mysql.user set authentication_string=password('newpassword') where user='root';
刷新權限列表
mysql> flush privileges; mysql> exit;
重啟mysql
$ sudo service mysql restart
使用剛設置的root
賬號登錄時可能會遇到如下問題
ERROR 1698 (28000): Access denied for user ‘root’@’localhost’
產生這個問題的原因是Ubuntu默認安裝的mysql使用的是UNIX auth_socket plugin
,意味着mysql用戶名必須和登錄當前Ubuntu系統的用戶名一樣才能登錄,查看一下root用戶使用的是什么類型的,先使用默認用戶名和密碼登錄mysql,然后查看
mysql> USE mysql; mysql> SELECT User, Host, plugin FROM mysql.user; +------------------+-----------------------+ | User | plugin | +------------------+-----------------------+ | root | auth_socket | | mysql.sys | mysql_native_password | | debian-sys-maint | mysql_native_password | +------------------+-----------------------+
顯然root
賬戶使用的是auth_socket
,修改root
賬戶使用mysql_native_password
即可
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit;
重啟mysql重新登錄即可
$ sudo service mysql restart