ฉันจะลบรหัสผ่านสำหรับ MySQL ได้อย่างไร ฉันไม่ต้องการมีรหัสผ่านเพื่อเชื่อมต่อกับฐานข้อมูล เซิร์ฟเวอร์ของฉันใช้งาน Ubuntu
ฉันจะลบรหัสผ่านสำหรับ MySQL ได้อย่างไร ฉันไม่ต้องการมีรหัสผ่านเพื่อเชื่อมต่อกับฐานข้อมูล เซิร์ฟเวอร์ของฉันใช้งาน Ubuntu
คำตอบ:
โดยส่วนตัวฉันคิดว่าเป็นการดีกว่าที่จะตั้งรหัสผ่านและบันทึกไว้ใน /root/.my.cnf:
ครั้งแรก:
mysqladmin -u root password 'asdfghjkl'
จากนั้นแก้ไขไฟล์. my.cnf ของรูท:
[client]
password = asdfghjkl
chmod 0600 .my.cnf
ตรวจสอบให้แน่ใจ
ตอนนี้คุณมีรหัสผ่าน แต่คุณไม่ได้รับพร้อมท์อีกต่อไป การติดตั้งเซิร์ฟเวอร์ MySQL เริ่มต้นของฉันคือรหัสผ่านที่ไม่ซ้ำกันแบบสุ่มสำหรับเซิร์ฟเวอร์ MySQL แต่ละตัวบันทึกไว้ในไฟล์. my.cnf เช่นนี้
mv ./+%Y%m%d
. $ db.sql $ OUTPUT` ระหว่าง mysqldump และ gzip
หากคุณมีรหัสผ่านที่ตั้งไว้สำหรับ MySQL ให้ทำตามคำแนะนำในการกู้คืนรหัสผ่าน root ของ MySQLจากนั้นตั้งค่ารหัสผ่านเป็น null:
สำหรับ 5.7.6 และใหม่กว่า
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'
สำหรับ 5.7.5 และก่อนหน้า
update user set password=PASSWORD("") where User='root';
* ต้องมีการรีสตาร์ท DB (ดูคำแนะนำที่ลิงค์) เพื่อให้สิ่งนี้มีผล
sudo service mysql restart
unix_socket
ปลั๊กอินไม่เป็นสิ่งที่แตกต่างกันเล็กน้อย
ใช่รหัสผ่านน้อยอาจเป็นสิ่งที่ดี แต่อย่าเพิ่งเปิดฐานข้อมูลสำหรับทุกคน
ผ่าน unix_socket:
grant usage on *.* to 'root'@'localhost' identified via unix_socket;
สิ่งนี้จะช่วยให้คุณใช้ mysql แบบไม่ต้องใส่รหัสผ่านสำหรับผู้ใช้ root ในระบบ Btw นี่เป็นค่าเริ่มต้นในการเผยแพร่ ubuntu / debian ล่าสุด
some_user@box: mysql -u root # denied
root@box: mysql # good
some_user@box: sudo mysql # good, if "some_user" has sudo rights.
สไลด์อธิบาย: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips
คุณยังสามารถทำสิ่งต่อไปนี้
grant all privileges on *.* to 'root'@'localhost' identified by '';
ฉันค่อนข้างมั่นใจว่าโดยค่าเริ่มต้นจะไม่มีรหัสผ่านหากผู้ใช้ของคุณเป็นผู้ดูแลระบบและเข้าถึงได้ในเครื่อง คุณกำลังค้นหาสิ่งที่แตกต่างกว่านั้นหรือไม่?
มันใช้ได้ไหม?
#> mysqladmin -u root password ''