คุณจะทดสอบข้อมูลรับรอง MySQL จากบรรทัดคำสั่งบนเซิร์ฟเวอร์ Linux ได้อย่างไร
คุณจะทดสอบข้อมูลรับรอง MySQL จากบรรทัดคำสั่งบนเซิร์ฟเวอร์ Linux ได้อย่างไร
คำตอบ:
@ Phil's Answerและ@ Mr.Brownstone คำตอบควรเพียงพอสำหรับคำถามของคุณดังนั้น +1 สำหรับทั้งคู่
สำหรับสิ่งต่อไปนี้สมมติว่าคุณกำลังลงชื่อเข้าใช้ด้วยชื่อผู้ใช้ myuser
เมื่อคุณเชื่อมต่อกับ mysql แล้วคุณควรเรียกใช้แบบสอบถามต่อไปนี้:
SELECT USER(),CURRENT_USER();
บางครั้งก็แตกต่างกัน นี่อาจทำให้คุณเข้าใจว่าทำไมคุณถึงได้รับอนุญาตให้เข้าสู่ mysql
นี่คือแบบสอบถามอื่นที่คุณต้องเรียกใช้:
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
myuser
นี้จะแสดงวิธีการที่คุณได้รับอนุญาตให้เข้าสู่ระบบเป็น
หากคุณเห็น'myuser'@'localhost'
คุณสามารถรับรองความถูกต้องจากภายในเซิร์ฟเวอร์ DB
หากคุณเห็น'myuser'@'127.0.0.1'
และไม่เห็น'myuser'@'localhost'
คุณสามารถรับรองความถูกต้องจากภายในเซิร์ฟเวอร์ DB อีกครั้ง แต่คุณต้องระบุ--protocol=tcp
จากบรรทัดคำสั่ง
หากคุณเห็น'myuser'@'%'
คุณสามารถเข้าสู่ระบบจากระยะไกลได้จากเซิร์ฟเวอร์ใด ๆ
หากคุณเห็น'myuse'r@'10.20.30,%'
คุณสามารถลงชื่อเข้าใช้ทางไกลได้จาก 10.20.30% netblock
เมื่อคุณเห็นสิ่งที่ 'mysql.user' มีไว้สำหรับผู้ใช้ของคุณคุณอาจต้องการอนุญาตหรือ จำกัด myuser ไม่ให้เข้าสู่ระบบด้วยวิธีใดวิธีหนึ่ง
หากคุณเพียงแค่ต้องการตรวจสอบว่ารหัสผ่านสำหรับmyuser
คือwhateverpassword
คุณสามารถทำต่อไปนี้:
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
คุณสามารถตรวจสอบจากบรรทัดคำสั่งดังต่อไปนี้:
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
หากคุณไม่ได้root
และต้องการทดสอบ myuser เท่านั้นคุณสามารถทำได้:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
หากคุณได้รับ 1 รหัสผ่านสำหรับ myuser จะได้รับการยืนยันว่าดี
mysql -h host -u user -p<whatever> -e"quit"
สิ่งนี้อนุญาตให้คุณใช้สายอักขระการเชื่อมต่อเดียวกันกับที่คุณใช้สำหรับการส่งแบบสอบถามไปยังเซิร์ฟเวอร์โดยทางโปรแกรม คุณสามารถเพิ่ม|| exit 1
การสิ้นสุดโดยอัตโนมัติเพื่อออกจากอาร์กิวเมนต์ที่ไม่ถูกต้อง คุณอาจต้องการเปลี่ยนเส้นทาง stderr /dev/null
หากคุณไม่ชอบข้อความแสดงข้อผิดพลาด MySQL ที่สร้างขึ้นอัตโนมัติ
คุณสามารถใช้คำสั่งต่อไปนี้ (สมมติว่าคุณตั้งค่า mysql ไว้ใน PATH ของคุณ):
mysql -h host -u user -p
เพียงแทนที่โฮสต์และผู้ใช้ด้วยค่าที่ถูกต้องจากนั้นคุณควรได้รับพร้อมท์สำหรับรหัสผ่านของคุณ
mysql --user=user_name --password=your_password dbname
คำถามของคุณง่ายหรือมีกรณีเฉพาะที่คุณต้องการทดสอบหรือไม่?