mysql에서 비밀번호를 변경할 때 일반적으로 쓰는 명령어


update user set password=password('q1w2e3') where user='root';


근데 이게


ERROR 1054 (42S22): Unknown column 'password' in 'field list'


에러가 발생할때가 있다..

이때는 password 대신 authentication_string 필드가 존재한다.

따라서 


update user set authentication_string=password('q1w2e3') where user='root';

로 시도해본다.

1. 3306이 접근 가능한 상태인지 확인

첫번째로 우선 아래 링크를 따라 확인해본다. 제일 기본적인 확인 절차..

https://zetawiki.com/wiki/MySQL_ERROR_1045_%EC%A0%91%EA%B7%BC_%EA%B1%B0%EB%B6%80

bind-address를 주석해도 안된다면

bind-address=0.0.0.0

으로 설정한다.

그리고 재시작

service mysql restart


2. 접속하려는 계정이 외부접속이 가능한 권한을 가졌는지에 대한 문제 확인

위 과정을 통해 접속은 돼는데,, 접근이 거부돼어 실제로는 접속이 튕기는 현상이 발생했다.

이때 1의 과정에서 조회했던 테이블을 확인해보면 같은 계정이더라도 Host 필드가 다른 것을 확인할 수 있다..

mysql> SELECT host, user, password FROM mysql.user WHERE user='root';
+-----------+------+-------------------------------------------+
| Host      | User | Password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *64B2393C4607E57C549B41537134BC7C3314164E |
| myserver1 | root | *64B2393C4607E57C549B41537134BC7C3314164E |
| %         | root | *F3A2A51A9B0F2BE2468926B4132313728C250DBF |
+-----------+------+-------------------------------------------+
1 rows in set (0.00 sec)

localhost는 당연히 자기자신의 호스트에서 접속하는 것을 의미하며 %는 모든 외부 호스트에 대해 접근할수있도록 하는 설정이다.

따라서 만일, % 또는 본인이 접속시도 하고자 하는 곳의 호스트가 위에처럼 등록되어있지 않다면 접근 거부 현상이 일어난다.


CREATE USER 'testID'@'%' IDENTIFIED BY 'mytestpw' PASSWORD EXPIRE NEVER;

GRANT ALL PRIVILEGES ON TESTDB.* TO 'testID'@'%';

flush privileges;


이렇게 해주면 자동으로 저 필드에 %가 추가된다.

flush privileges;를 해주는 것을 잊지말자

+ Recent posts