당신이 달렸을 때
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;
원격으로 연결하려면 TCP / IP를 사용하여 DNS 이름, 퍼블릭 IP 또는 127.0.0.1을 지정해야합니다.
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.user 테이블 에서 MySQL 인증 방법을보고 합니다.
이렇게하면 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>
인증 순서는 매우 엄격합니다. 가장 구체적인 것부터 가장 적은 것까지 확인합니다. DBA StackExchange에서이 인증 스타일에 대해 썼습니다 .
필요할 때 mysql 클라이언트의 프로토콜로 TCP를 명시 적으로 호출하는 것을 잊지 마십시오.
FLUSH PRIVILEGES
?