mac mariadb 접속 에러 해결

최동민·2023년 3월 29일
0

꽤나 오랫동안 이 에러에 갇혀 있었다.
로컬에서 DB 접속이 되지 않았음.


brew update, brew upgrade 하고
brew uninstall mariadb 후 여러 번을 재설치해보았으나 결과는 동일했다.
brew services restart mariadb 해주고 brew services list로 상태를 확인해봐도 계속 stopped에 머물러있었다.

구글링해보면 자꾸 /usr/local/var/mysql/ 경로를 말하는데, 나는 해당 경로가 존재하지 않았고 usr/local/에는 bin과 lib 디렉토리만 존재했다.
해당 경로에 mysql.sock를 만들고 정말 다양한 호작질을 해봤지만 소용 없었음

그러던 중 /opt/homebrew/var/mysql 경로에 err 로그 파일 확인이 가능하다는 것을 알게 됨.

로그를 보니 다음과 같은 에러가 뜨고 있음.
cat /opt/homebrew/var/mysql/$(hostname).err

다음은 /etc/my.cnf 파일이다.
/etc/my.cnf 파일에 있는 bind-address 설정을 확인. MariaDB가 모든 IP 주소에서 접속을 허용하도록 설정되어 있는지 확인.

my.cnf에서 mysql.sock라는 파일을 다음 경로로 지정해줌 (파일이 비어있는 것이 정상)
(/tmp/mysql.sock로 하는게 아님) -> 소켓 파일의 위치를 지정해주는 것.
그리고
mysql -u root -p -S /opt/homebrew/var/mysql/mysql.sock

로그 파일에 따르면, 데이터베이스 테이블이 누락되어 있어서 MariaDB 서버가 시작되지 않습니다. mysql_install_db 명령을 사용하여 MariaDB 시스템 테이블을 다시 생성해야 합니다.

mysql_install_db를 실행하여 시스템 테이블을 초기화하세요. Homebrew에서 설치한 MariaDB의 경우 다음 명령을 사용합니다.

mysql_install_db --user=$(whoami) --basedir="$(brew --prefix mariadb)" --datadir=/opt/homebrew/var/mysql

어!?

새로운 에러 대응

MariaDB를 --skip-grant-tables 옵션과 함께 시작하여 권한 테이블을 건너뛰도록 합니다.

접속이 됐다!!
하지만 mysql.user에 문제가 있다

root로 접속하니 해결!

어느 순간부터 로컬에서 DB 접속이 안돼서 고생했는데 다행히 해결되었다ㅜㅜ


  • 짚고 가야할 점
    mysqld_safe --skip-grant-tables --skip-networking &

--skip-grant-tables 옵션은 모든 클라이언트에게 모든 데이터베이스에 대한 모든 권한을 부여합니다. 이 옵션은 비밀번호를 잊어버린 경우 등 권한 시스템을 우회해야 하는 경우에만 잠시 사용해야 합니다.

--skip-networking 옵션은 서버가 네트워크 연결을 허용하지 않도록 합니다. 즉, 로컬 호스트 연결만 가능합니다.

& 기호는 이 명령어를 백그라운드에서 실행하도록 합니다.

따라서 이 명령을 종료하고 MariaDB를 정상적인 설정으로 재시작해주어야 함.

  1. 먼저 ps -ef | grep mysqld_safe 명령어를 실행하여 mysqld_safe 프로세스를 찾습니다.
  1. 프로세스 ID를 얻은 후 kill -9 [PID]를 사용하여 프로세스를 종료합니다. 여기서 [PID]는 이전 단계에서 찾은 프로세스 ID입니다.

  2. brew services restart mariadb 명령어를 실행하여 MariaDB 서비스를 재시작합니다.

profile
코드를 두드리면 문이 열린다

0개의 댓글