준호씨의 블로그
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
여기 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/
'개발이야기' 카테고리의 다른 글
MariaDB - docker 로 개발용 DB 세팅 (0) | 2019.08.21 |
---|---|
Apache Tomcat 버전과 Servlet 버전 (0) | 2019.08.20 |
perl - string trim, ltrim, rtrim (0) | 2019.08.15 |
ansible 로 hiredis 라이브러리 설치 하기 (0) | 2019.08.05 |
IntelliJ tomcat 라이브러리 설정하기. tomcat-dbcp 추가하기 (0) | 2019.08.02 |