Mysql
在 MySQL 配置文件中為帳戶指定無密碼
這是一個理論上的問題,因為擁有一個沒有密碼的數據庫帳戶是一個糟糕的主意。
**問題:**有沒有辦法在 MySQL 配置文件中指定一個沒有密碼的帳戶?
從技術上講,是的。但是,如果目標是擁有一個用於某些任務的帳戶,您可以使用正確的密碼創建一個帳戶,然後將一個名為的文件
.my.cnf
放在將使用 MySQL 帳戶的使用者的主目錄中。該
.my.cnf
文件看起來像這樣:[mysql] user=sandeep password=superSecretPassword!123 [mysqladmin] user=sandeep password=superSecretPassword!123
這比創建沒有密碼的使用者要好一些。
你要問的是深入到一個角落裡,以至於你即將消失在裂縫中。
嘗試#1
嘗試#2:非常不安全
創建一個mysql使用者
CREATE USER 'cornercaseuser'@'%' IDENTIFIED WITH mysql_native_password BY 'cornercasepassword'; GRANT .... TO 'cornercaseuser'@'%';
將這些行粘貼在
/etc/my.cnf
自身中(是的 mysqld 的配置文件)[mysql] password='cornercasepassword'
然後就可以這樣登錄了
mysql -ucornercaseuser
我見過客戶這樣做。非常危險 !!!
嘗試#3
使用套接字身份驗證。安裝時,
root@localhost
配置為無需密碼即可登錄。只需創建一個喜歡它的使用者。例如,在 MariaDB 中,當你創建一個使用者時,你仍然必須給它一個密碼。但是,您必須將使用者聲明為同時使用這兩種協議。這是在文件中
CREATE USER root@localhost IDENTIFIED VIA unix_socket OR mysql_native_password USING 'invalid' CREATE USER mysql@localhost IDENTIFIED VIA unix_socket OR mysql_native_password USING 'invalid'
為什麼這樣的使用者必須同時擁有這兩種協議?
如果在 mysqld 已經執行的情況下啟動 mysqld,pid 文件就會消失。這可能會或可能不會影響套接字文件。如果是這樣,
root@localhost
則不能再登錄檢查套接字文件。此時,您必須使用密碼和 TCP/IP 進行連接
mysql -h127.0.0.1 -uroot -p --protocol=tcp -P3306