ทดสอบข้อมูลรับรอง MySQL จากบรรทัดคำสั่ง Linux หรือไม่


คำตอบ:


5

@ Phil's Answerและ@ Mr.Brownstone คำตอบควรเพียงพอสำหรับคำถามของคุณดังนั้น +1 สำหรับทั้งคู่

สำหรับสิ่งต่อไปนี้สมมติว่าคุณกำลังลงชื่อเข้าใช้ด้วยชื่อผู้ใช้ myuser

เมื่อคุณเชื่อมต่อกับ mysql แล้วคุณควรเรียกใช้แบบสอบถามต่อไปนี้:

SELECT USER(),CURRENT_USER();
  • USER ()รายงานว่าคุณพยายามตรวจสอบสิทธิ์ใน MySQL อย่างไร
  • CURRENT_USER ()รายงานว่าคุณได้รับอนุญาตให้ตรวจสอบสิทธิ์ใน MySQL ได้อย่างไร

บางครั้งก็แตกต่างกัน นี่อาจทำให้คุณเข้าใจว่าทำไมคุณถึงได้รับอนุญาตให้เข้าสู่ 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 จะได้รับการยืนยันว่าดี


13
mysql -h host -u user -p<whatever> -e"quit"

สิ่งนี้อนุญาตให้คุณใช้สายอักขระการเชื่อมต่อเดียวกันกับที่คุณใช้สำหรับการส่งแบบสอบถามไปยังเซิร์ฟเวอร์โดยทางโปรแกรม คุณสามารถเพิ่ม|| exit 1การสิ้นสุดโดยอัตโนมัติเพื่อออกจากอาร์กิวเมนต์ที่ไม่ถูกต้อง คุณอาจต้องการเปลี่ยนเส้นทาง stderr /dev/nullหากคุณไม่ชอบข้อความแสดงข้อผิดพลาด MySQL ที่สร้างขึ้นอัตโนมัติ


6

คุณสามารถใช้คำสั่งต่อไปนี้ (สมมติว่าคุณตั้งค่า mysql ไว้ใน PATH ของคุณ):

mysql -h host -u user -p

เพียงแทนที่โฮสต์และผู้ใช้ด้วยค่าที่ถูกต้องจากนั้นคุณควรได้รับพร้อมท์สำหรับรหัสผ่านของคุณ


2
ฉันต้องการตรวจสอบแบบเป็นโปรแกรม ชอบสิ่งที่ส่งกลับจริงหรือเท็จ
Jake Wilson

2
mysql --user=user_name --password=your_password dbname

คำถามของคุณง่ายหรือมีกรณีเฉพาะที่คุณต้องการทดสอบหรือไม่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.