iT邦幫忙

0

MySQL --skip-grant-tables 選項關閉

  • 分享至 

  • xImage

各位大大好,有事情請教
是這樣的
我安裝了MySQL server community edition來玩,久未登入就忘了密碼
經過一番搜尋,使用了下列的指令來登入

sudo /usr/local/mysql/support-files/mysql.server stop //停止server
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
----
mysql -u root
UPDATE mysql.user SET authentication_string=PASSWORD("rootpass") WHERE User='root'; #我的server是8.0的

後續還是無法登入,一怒之下就用initial DB的方式重建一個server

可是這時發現initial後的MySQL,連線可以不用帳密就直接進入DB了
有去找過/etc/my.cnf 跟 basedir/my.cnf
這兩個地方都沒有這個檔,想要安裝mysql terminal但是安裝失敗

目前秉持著一定要讓連線可以檢查帳密的堅持下持續嘗試(工作不受影響,單純是自己手賤愛玩弄出來的side-project)
所以問問看各位大神,怎麼把密碼驗證功能開回去?

系統: Mac M1 Montery-12.3
MySQL: 8.0.29-arm64

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
zcm
iT邦研究生 3 級 ‧ 2022-04-28 18:23:19
最佳解答
SELECT user, plugin FROM mysql.user;

看看plugin是否等於mysql_native_password, 如果不是就改回來即可

UPDATE mysql.user SET authentication_string = PASSWORD('rootpass'), plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost';

謝您,可我想問的是如何將password validation開啟

zcm iT邦研究生 3 級 ‧ 2022-04-29 12:26:22 檢舉

方法1:在my.cnf中加参數
[mysqld]
plugin-load-add=validate_password.so
#ON/OFF/FORCE/FORCE_PLUS_PERMANENT: 是否使用该插件(及强制/永久强制使用)
validate-password=FORCE_PLUS_PERMANENT

方法2:命令安装

mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

方法3:啟動時使用参數

/usr/sbin/mysqld start --plugin-load='validate_password.so

zcm
前輩,跟你報告一下,上面這三個方法我都沒有用到
那天抱著程序正義的想法,我要 "再" initial 一次以後來建一個my.cnf
結果initial完以後,連線就都要帳密了...
真心不騙我也當場傻掉...
沒有動過任何參數的狀況下

  • 沒有my.cnf
  • 沒有調mysql.server
  • 沒有設置base_dir
  • 沒有etc/my.cnf
  • initial後重開幾次,無效
  • 重灌重開過幾次,無效

但為什麼之後initial有效,我也拿不出頭緒......
先讓project續go,目前沒辦法重現issue,之後遇到再說了

我要發表回答

立即登入回答