เมื่อคุณวิ่ง
mysql -u bill -p
และได้รับข้อผิดพลาดนี้
ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)
mysqld คาดหวังให้คุณเชื่อมต่อเป็น bill@localhost
ลองสร้าง bill@localhost
CREATE USER bill@localhost IDENTIFIED BY 'passpass';
grant all privileges on *.* to bill@localhost with grant option;
หากคุณต้องการเชื่อมต่อจากระยะไกลคุณต้องระบุชื่อ DNS, IP สาธารณะหรือ 127.0.0.1 โดยใช้ TCP / IP:
mysql -u bill -p -hmydb@mydomain.com
mysql -u bill -p -h10.1.2.30
mysql -u bill -p -h127.0.0.1 --protocol=TCP
เมื่อคุณเข้าสู่ระบบโปรดเรียกใช้สิ่งนี้
SELECT USER(),CURRENT_USER();
USER ()รายงานว่าคุณพยายามตรวจสอบสิทธิ์ใน MySQL อย่างไร
CURRENT_USER ()รายงานว่าคุณได้รับอนุญาตให้ตรวจสอบสิทธิ์ใน MySQL จากตารางmysql.user อย่างไร
สิ่งนี้จะช่วยให้คุณมีมุมมองที่ดีขึ้นเกี่ยวกับวิธีการและเหตุผลที่คุณได้รับอนุญาตให้ลงชื่อเข้าใช้ MySQL เหตุใดมุมมองนี้จึงสำคัญที่ต้องรู้ มันจะทำอย่างไรกับโปรโตคอลการสั่งซื้อการตรวจสอบผู้ใช้
นี่คือตัวอย่าง: ฉันจะสร้างผู้ใช้ที่ไม่ระบุชื่อบนเดสก์ท็อป MySQL ของฉัน
mysql> select user,host from mysql.user;
+---------+-----------+
| user | host |
+---------+-----------+
| lwdba | % |
| mywife | % |
| lwdba | 127.0.0.1 |
| root | 127.0.0.1 |
| lwdba | localhost |
| root | localhost |
| vanilla | localhost |
+---------+-----------+
7 rows in set (0.00 sec)
mysql> grant all on *.* to x@'%';
Query OK, 0 rows affected (0.02 sec)
mysql> select user,host from mysql.user;
+---------+-----------+
| user | host |
+---------+-----------+
| lwdba | % |
| mywife | % |
| x | % |
| lwdba | 127.0.0.1 |
| root | 127.0.0.1 |
| lwdba | localhost |
| root | localhost |
| vanilla | localhost |
+---------+-----------+
8 rows in set (0.00 sec)
mysql> update mysql.user set user='' where user='x';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> select user,host from mysql.user;
+---------+-----------+
| user | host |
+---------+-----------+
| | % |
| lwdba | % |
| mywife | % |
| lwdba | 127.0.0.1 |
| root | 127.0.0.1 |
| lwdba | localhost |
| root | localhost |
| vanilla | localhost |
+---------+-----------+
8 rows in set (0.00 sec)
mysql>
ตกลงดูฉันเข้าสู่ระบบในฐานะผู้ใช้ที่ไม่ระบุชื่อ:
C:\MySQL_5.5.12>mysql -urol -Dtest -h127.0.0.1 --protocol=TCP
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.5.12-log MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select user(),current_user();
+---------------+----------------+
| user() | current_user() |
+---------------+----------------+
| rol@localhost | @% |
+---------------+----------------+
1 row in set (0.00 sec)
mysql>
การสั่งซื้อการรับรองความถูกต้องเข้มงวดมาก มันตรวจสอบจากที่เฉพาะเจาะจงไปที่น้อยที่สุด ผมเขียนเกี่ยวกับรูปแบบ authentiation นี้ใน DBA StackExchange
อย่าลืมโทร TCP อย่างชัดเจนเป็นโปรโตคอลสำหรับไคลเอนต์ mysql เมื่อจำเป็น
FLUSH PRIVILEGES
?