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 |
+------------------+-----------------------+
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ sudo service mysql restart