MySQL(MariaDB)默認密碼和修改方法

因爲筆者只測試過Ubuntu 16.04.四、Ubuntu 19.04和Debian 9,此方法不肯定在其餘版本下適用。mysql

本文章介紹的方法一樣適用於這樣的錯誤信息。sql

➜  ~ mysql -u root -p          
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

查看默認密碼

某些發行版本,使用包管理器安裝MySQL後,查看這個文件能夠看到安裝後的默認密碼/etc/mysql/debian.cnf,這個密碼是屬於debian-sys-maint的,而非root
即便在這裏你可能可使用root用戶登陸,由於root用戶默認登陸方式是使用socket鏈接,而不驗證密碼。數據庫

修改root密碼

若是須要修改先使用debian-sys-maint登陸數據庫,完成如下操做網絡

  1. select user, plugin from mysql.user;查看默認的鏈接方式。
  2. 若是是auth_socket(MySQL)的鏈接方式,則繼續下面得步驟,若是是unix_socket(MariaDB),則轉到MariaDB的處理方法
  3. update mysql.user set authentication_string=password('root'), plugin = 'mysql_native_password' where user = 'root';使用這一行明令將root密碼修改成root。
  4. flush privileges;應用權限。
  5. 退出並重啓MySQL。

MariaDB的處理方法

上面的方法僅針對MySQL測試。
MariaDB的root默認鏈接方式是unix_socket(MariaDB)
在Debian中軟件包mysql已經替換成了mariadb了。在安裝後/etc/mysql/debian.cnf預設了root用戶使用socket的鏈接方式,因此不輸入密碼也可在命令行直接使用mysql命令登陸。
要想使用密碼鏈接須要修改鏈接方式socket

  1. 輸入mysql進入客戶端,若沒法進入則跳過。
  2. 輸入select user, plugin from mysql.user查看默認的鏈接方式。
  3. 若是是unix_socket(MariaDB),則繼續下面得步驟。
  4. 退出mysql,並kill掉進程。
  5. 打開mysqld_safe --skip-grant-tables放入後臺,並進入mysql
  6. update mysql.user set authentication_string = password('root'), plugin = 'mysql_native_password' where user = 'root';
  7. flush privileges;應用權限。
  8. 修改/etc/mysql/mariadb.conf.d/50-server.cnf中的bind-address爲容許的網絡地址,若爲整個網絡則填入0.0.0.0或註釋掉
  9. 重啓服務
  10. 退出並重啓MySQL。

爲MySQL添加遠程訪問

  1. 修改/etc/mysql/mysql.conf.d/mysqld.cnf``/etc/mysql/my.cnf中的bind-address爲容許的網絡地址,若爲整個網絡則填入0.0.0.0或註釋掉
  2. 重啓服務
  3. 啓動mysql,輸入use mysql;進入mysql表
  4. 修改地址grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;容許root用戶遠程使用root爲密碼鏈接。
  5. 使修改生效flush privileges;
  6. 退出MySQL。
相關文章
相關標籤/搜索