준호씨의 블로그

OSX - brew install mariadb 설치 했는데 발생하는 여러 오류들. Access denied for user 'root'@'localhost' 본문

개발이야기

OSX - brew install mariadb 설치 했는데 발생하는 여러 오류들. Access denied for user 'root'@'localhost'

준호씨 2019. 8. 19. 22:08
반응형

맥에서 뭔가 설치 할 때는 brew 가 짱이죠.

$ brew install mariadb

로 mariadb 를 설치를 하면 설치는 되는데 뭔가 잘 안되더군요. 삽질한 내용들을 정리해 보았습니다.

 

/usr/local/var 의 소유자 변경

/usr/local/var 의 권한이 root 로 되어 있는 경우 /usr/local/var/mysql 경로를 못만들어서 잘 안되는 경우가 있어군요. 그래서 /usr/local/var 를 바꿔주니 잘 되긴 합니다.

$ sudo chown junho85 /usr/local/var

이거 이렇게 바꿔도 혹시 뭔가 문제 될만한게 있는지는 잘 모르겠습니다.

공포의 Access denied for user 'root'@'localhost'

설치는 분명 잘 된거 같고 mysql -uroot 로 접속하라고 하고 있는데 mysql -uroot 로 접속하려 하면 Access denied for user 'root'@'localhost' 가 뜹니다.

$ brew install mariadb
==> Downloading https://homebrew.bintray.com/bottles/mariadb-10.4.6.mojave.bottle.tar.gz
Already downloaded: /Users/junho85/Library/Caches/Homebrew/downloads/294ef713eccab120d10cba20d498e63070e918458f0c987ef1509148fad8a4cc--mariadb-10.4.6.mojave.bottle.tar.gz
==> Pouring mariadb-10.4.6.mojave.bottle.tar.gz
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

MySQL is configured to only allow connections from localhost by default

To connect:
    mysql -uroot

To have launchd start mariadb now and restart at login:
  brew services start mariadb
Or, if you don't want/need a background service you can just run:
  mysql.server start
==> Summary
🍺  /usr/local/Cellar/mariadb/10.4.6: 745 files, 173.4MB

DB 에 접속해서 패스워드를 바꾸라는 둥 이상한 글들이 있는에 애초에 DB 접속이 안되는데 어떻게 root 패스워드를 바꾼다는건지.

아무튼 root 패스워드를 바꿔야 되긴 합니다.

mysqladmin -u root password 'new-password'

이런거 해 보라는 글도 많은데 암튼 안됩니다. 이 명령어 날려도 connect to server at 'localhost' failed 뜹니다.

그래서 또 찾다 보면 mysql_secure_installation (or mariadb-secure-installation)

$ mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Enter current password for root (enter for none):

이건 또 왜 안되는지?

결국 해결한 방법은 sudo mariadb-secure-installation 이었습니다. sudo 를 붙이니 되더군요. 좀 이해는 안되긴 하지만요.

$ sudo mariadb-secure-installation
Password:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n]
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n]
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]
 ... Success!
 
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

아무튼 머나먼 여정 후에 mariadb 접속에 성공 했습니다.

$ mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 23
Server version: 10.4.6-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

이런짓 몇번 하다 하다 보면 누가 DB 좀 대신 깔아 줬으면 하는 생각이 들게 되네요. 돈내면 클라우드 서비스들이 알아서 깔아 주긴 하겠지만...

여담. 아직도 잘 안되는 것. mysql.server stop

mysql.server stop 을 하면 잘 내려가야 될 거 같은데 안내려 가더라구요. 한번에 stop 하면 PID 파일이 지워진 상태라 안내려 줍니다. ps 로 프로세스를 확인하면 분명 안내려 갔는데 말이죠.

$ mysql.server stop
 ERROR! MariaDB server process #43388 is not running!
$ mysql.server stop
 ERROR! MariaDB server PID file could not be found!

이렇게 해서 안내려 갈때는

pkill mysqld

라던지

killall mysqld

를 해 주기도 했는데 그래도 잘 안내려 가는 경우가 있더군요. 그럴 땐 어쩔 수 없이 그냥 ps 로 pid 찾아서 kill <pid> 로 죽였습니다.

pkill mysqld_safe

하니 죽기도 하네요. mysqld_safe 를 죽여야 되는데 mysqld 를 죽이려고 하니 잘 안되는걸지도 모르겠습니다.

mysqld 죽이기(?)에 대해서도 나중에 좀 더 알아 보고 정리 해 보면 좋을거 같습니다.

 

아무튼 보통은 brew install mariadb 로 설치 하면 mariadb 가 실행되고 있는상태인데요. 분명 설치 할 때 접속 하려면

 

 

 

여담. mysql, mariadb cleanup

기존에 mysql 이나 mariadb 같은것들을 설치 해서 충돌이 날 수 있지 않을까 해서 여러가지를 열심히 지웠었는데요.

https://gist.github.com/vitorbritto/0555879fe4414d18569d

 

Remove MySQL completely from Mac OSX

Remove MySQL completely from Mac OSX. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

여기 mysql 을 cleanup 하기 위한 여러가지 내용들이 있습니다. 더불어 저는 mysql@5.7 도 있어서 더 지워주었구요.

db 파일 같은것들을 아래와 같이 지워 줄 수 있습니다.

rm -rf /usr/local/var/mysql

 

XAMPP 관련 파일들도 보이는 족족 지워주었습니다.

 

별도로 brew 패키지들 정리 하려고

brew cleanup

도 해 주었구요. 다음에 cleanup 관련해서 좀 따로 더 정리 해 보면 좋을거 같네요.

참고

https://mariadb.com/resources/blog/installing-mariadb-10-0-10-on-mac-os-x-with-homebrew/

 

Installing MariaDB 10.0.10 on Mac OS X with Homebrew | MariaDB

Developing on your Mac? Get the latest stable MariaDB version set up on OS X easily with Homebrew. See this step by step guide on installing MariaDB 10.0.10 by Ben Stillman. If you do already have…

mariadb.com

 

반응형
Comments