2019年3月31日 星期日

ubuntu 18.04 之 mysql 忘記 root 密碼

今天在家裡的 lubuntu 18.04 電腦上想要把冷凍很久的 mysql 拿出來用, 但因為事業做太大、 serves 養太多了, 突然發現完全想不起來這個不重要的 mysql 帳號的 root 用戶密碼。 沒關係, 記得搜尋得到解法。 找到一篇 2012 年的文章 , 但是在執行 mysqld_safe --skip-grant-tables & 的時候, 卻看到這樣的訊息: mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 然後 mysqld_safe 馬上結束, 我也就無法繼續往下做。

[2020/6/27] 至於 ubuntu 20.04 上面的 mysql 8, 又要用 另一個方法, 煩吶~

從 stackoverflow 的 這個解答 再找到 改設定檔的方法 以及 修改密碼的正確指令, 最後配合 *ubuntu 18.04 的狀況做一點小修改, 得到以下。

  1. 從 /etc/mysql/my.cnf 得知應該編輯 /etc/mysql/mysql.conf.d/mysqld.cnf 。 在 [mysqld] 下面加兩句:
    skip-grant-tables
    skip-networking
    
  2. 在 (危險的) 免密碼模式下重新啟動 mysql : systemctl restart mysql
  3. 免密碼直接登入: mysql -u root
  4. 在 mysql 命令列底下:
    use mysql;
    update user set authentication_string=PASSWORD("大忙人記得住的密碼") where User='root';
    update user set plugin="mysql_native_password" where User='root';
    flush privileges;
    quit;
    
  5. 再次編輯 /etc/mysql/mysql.conf.d/mysqld.cnf , 把剛才那兩句註解掉。
  6. 以正常 (需要密碼的模式) 重新啟動 mysql : systemctl start mysql
  7. 然後就可以 mysql -u root -p 並輸入密碼、 登入做事了。

然後寫完文章要加 tag 時又突然發現不知道該下什麼標籤才好... 平常根本沒在用任何資料庫軟體, 我是 mysql 逃兵 啊 orz

2 則留言:

  1. 在Terminal 走到
    update user set authentication_string=PASSWORD("新密碼") where User='root';
    這步時顯示出
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("新密碼") where User='root'' at line 1
    的訊息
    請問大大是為什麼呢謝謝(Ubuntu和LAMP的新手)

    回覆刪除
    回覆
    1. 唉,這一篇又過時了。 請改參考新的一篇: https://newtoypia.blogspot.com/2020/06/root-password-mysql-8.html 又忘記 root 密碼之 mysql 8 版

      刪除

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。