ubuntu linux에 mysql 8.0을 설치했는데
기존 개발환경의 java버전이 낮아 mysql-connector library와 호환이 되지 않았다.
그래서 mysql 8.0을 모두 지우고 mysql 5.7로 재설치 하게 되었다.
1. 먼저 기존 mysql과 관련된 설치한 모든 것을 지운다.
1 2 3 4 5 | $ sudo apt-get remove --purge mysql* $ sudo apt-get autoremove $ sudo apt-get autoclean | cs |
중간중간 Y/n가 뜬다면 Y를 입력하여 모두 remove 시킨다.
2. 설치가능한 mysql 목록을 확인하고 mysql 5.7을 설치하기
1 2 3 | $ sudo apt-cache search mysql-server $ sudo apt-get install mysql-server-5.7 | cs |
설치가 완료되면 로그인을 시도한다.
로그인 시 아래와 같이 에러발생 한다.
1 2 3 4 5 | $ mysql -u root -p Enter password: ERROR 1698 (28000): Access denied for user 'root'@'localhost' | cs |
로그인을 위해 sudo를 이용해 mysql에 로그인한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ sudo mysql -u root mysql> USE mysql; mysql> SELECT User, Host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | User | Host | plugin | +------------------+-----------+-----------------------+ | root | localhost | auth_socket | | mysql.session | localhost | mysql_native_password | | mysql.sys | localhost | mysql_native_password | | debian-sys-maint | localhost | mysql_native_password | +------------------+-----------+-----------------------+ 4 rows in set (0.00 sec) | cs |
3. 현재 root 계정의 plugin이 auth_socket이므로 mysql_native_password로 update 시켜준다.
1 2 3 4 5 | mysql> USE mysql; mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit; $ service mysql restart | cs |
다음 root plugin을 확인한다.
1 2 3 4 5 6 7 8 9 10 11 | mysql> USE mysql; mysql> SELECT User, Host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | User | Host | plugin | +------------------+-----------+-----------------------+ | root | localhost | mysql_native_password | | mysql.session | localhost | mysql_native_password | | mysql.sys | localhost | mysql_native_password | | debian-sys-maint | localhost | mysql_native_password | +------------------+-----------+-----------------------+ 4 rows in set (0.00 sec) | cs |
auth_socket에서 mysql_native_password로 바뀐것을 확인했다.
이제 sudo 없이
1 | $ mysql -u root -p | cs |
로 비밀번호 없이 db에 접속할수 있다.
4. root 비밀번호를 재설정해주자.
1 2 3 4 5 6 7 | mysql> USE mysql; mysql> update user set password=password('0000') where user='root'; mysql> update user set authentication_string=password('0000') where user='root'; mysql> flush privileges; | cs |
설정이 끝나면 다시 로그인해본다.
$ mysql -u root -p
비밀번호 0000을 넣어줘야 db에 접속할수 있다.
5. root 계정을 외부에서 접속가능하게 허용해준다.
1 2 3 4 5 6 7 | mysql> grant all privileges on *.* to 'root'@'%' identified by '0000'; mysql> flush privileges; mysql> select host, user, authentication_string from user; mysql> exit | cs |
다음 bind-address 주석설정을 해준다.
1 2 3 | $ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf $ sudo service mysql restart | cs |
6. MySQL tool을 이용해 root로 DB가 접속되는지 확인한다.
잘 접속 되는 것을 확인할 수 있었다.
이후 테이블을 생성하고 유저생성 및 권한을 줘서 root로 접속하지 않고 작업을 진행할 수 있다.
7. 테이블 생성
1 | CREATE DATABASE DB명 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; | cs |
8. 유저 생성 및 권한 주기
1 | GRANT ALL PRIVILEGES ON DB명.* to '계정명'@'%' identified by '비밀번호'; | cs |
9. 비밀번호 변경
1 2 3 4 5 6 7 | USE mysql UPDATE user SET authentication_string=password('0000') where user='root'; FLUSH PRIVILEGES; exit | cs |
'전체 > 개발지식' 카테고리의 다른 글
IaaS, PaaS, SaaS 정리 (0) | 2019.09.22 |
---|---|
Notepad++ 사용시 save창 안뜨게 하기 (2) | 2019.07.30 |
Ubuntu Linux JDK 환경변수 설정 (2) | 2019.07.11 |
sourcetree 한글 깨짐 encoding 문제 해결방법 (0) | 2019.03.27 |
Servlet Lifecycle 라이프사이클 (서블릿 생명주기) (0) | 2019.02.03 |