최근에 루트 비밀번호를 변경하려고 하다가 잊어버린 문제가 발생했습니다. 그런데 어떻게든 mysql 서비스 자체를 완전히 깨뜨릴 수 있었던 것 같습니다. 그리고 다른 많은 서비스에서도 서버에 연결하는 데 문제가 있었기 때문입니다. 어리석은 일이 발생하기 전에 완전히 재설치하는 것이 최선이라고 결정했습니다. 사용 중인 모든 구성 요소를 제거하려면 apt-get purge mysql*
명령을 실행해도 mysql은 영향을 받지 않는 것 같습니다. 여러 번 시도하고 다시 시작한 후 마침내 mysql을 지운 것 같을 때 설치를 시도했지만 구성이 표시되지 않았고 mysql 명령을 사용할 때 시도할 때 묻지도 않았습니다. 사용자가 루트 비밀번호를 변경하려고 하는데 괜찮다고 말하지만 비밀번호가 작동하지 않습니다. 저는 극도로 혼란스럽고 좌절감을 느꼈습니다. 이런 일이 처음 발생한 것은 아니며 mysql을 다시 설치하는 것은 사실 제게 있어서 가장 큰 악몽입니다. 저를 도와주세요. 저는 제가 무엇을 해야 할지 전혀 모르겠습니다.
편집: 실제로 비밀번호를 설정해야 했지만... 어떤 비밀번호로든 로그인할 수 있었고 mysql_secure_installation을 사용한 후에도 원격 연결이 실제로 작동하지 않았습니다. 실제 f에 무슨 일이 일어났는지 모르겠지만 mysql 설치가 완전히 손상되었습니다.
답변1
설정을 시도하는 동안 실수로 "익명 사용자"를 추가했을 수 있습니다. mysql 데이터베이스에서 사용자를 삭제해야 합니다.
>delete from mysql.user where User='';
그런 다음 모든 호스트에서 사용할 수 있는 새 "루트" 사용자를 만듭니다.
>create user 'root'@'%' identified by 'your_new_password_here';
다음으로, 자신에게 모든 권한을 부여하십시오.
>grant all on *.* to 'root'@'%'; flush privileges;
(제 기억이 맞다면 권한 부여는 서버에서 이루어져야 하고, 원격 클라이언트는 허용되지 않습니다.)
이렇게 하면 루트와 비밀번호만 유효해집니다. secure_installation 옵션은 이전에 나를 혼란스럽게 했습니다. 어쨌든 이해하기 위해서는 매뉴얼이 더 좋습니다.
연결 문제의 경우 바인드 주소를 변경해야 할 수도 있습니다. mysql/mariadb에는 bind_address=127.0.0.1.
기본적으로 localhost인 기본값이 제공됩니다 . 그러니까 그 기계만 있는 거죠. 다른 컴퓨터를 허용하려면 서버에서 다음과 같이 변경하세요.bind_address=0.0.0.0
mysql에서 현재 바인딩_주소를 확인할 수 있습니다. 새 루트와 비밀번호를 사용하여 서버에 로그인하면
>show variables like 'bind_address';
다음과 같은 내용이 표시됩니다.
| Variable_name | Value |
+---------------+---------+
| bind_address | 0.0.0.0 |
+---------------+---------+
0.0.0.0이 아니면 변경해야 합니다.
.cnf 파일을 찾는 것은 까다로울 수 있습니다. 예를 들어 내 위치는 다음과 같습니다.
/etc/mysql/mariadb.conf.d/50-server.cnf
하지만 많은 사람들이 이를 찾는 데 어려움을 겪기 때문에 버전/릴리스(?)와는 매우 다르다고 생각합니다.
여기서 당신이 하는 일은 그것을 여는 것입니다어느지적 재산권. 더 많은 보안이 필요한 경우 클라이언트 IP를 추가하거나 여러 IP를 추가할 수 있습니다. 하지만 그러면 이것으로 제한됩니다. (저는 항상 0.0.0.0과 좋은 비밀번호를 사용합니다. 그게 제가 필요한 전부입니다.)