우분투 서버에 mysql을 설치하고 실행시키려고 하니 다양한 에러가 뜨면서 제대로 실행되지 않았다. 다음은 디버깅 기록이다.
sudo apt install mysql.server
mysql -u root -p
입력ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
라는 에러가 뜸sudo service mysql start
로 서버 실행mysql -u root -p
입력MySQL ERROR 1045 (28000): Access denied for user 'user_name'@'localhost' (using password: YES)
라는 에러가 뜸sudo mysql -u root
로 서버에 접속SELECT User, authentication_string FROM mysql.user;
SELECT User, plugin FROM mysql.user;
auth_socket
으로 설정되어 있다. 얘를 mysql_native_password
로 바꿔줘야 한다. UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root';
입력flush privileges;
SELECT User, plugin FROM mysql.user;
\q
를 입력해서 shell에서 나간 다음, mysql -u root -p
를 입력하고 잘 들어가지는 것을 확인했다. CREATE DATABASE db_name; // db 만들기
DROP DATABASE db_name; // db 삭제하기
show databases; // 모든 db 확인하기
use db_name; // db 선택하기
show tables; // 테이블 확인하기
show variables like 'datadir'; // db 저장 경로 확인하기(/var/lib/mysql/)
해야 할 작업은 다음의 두 가지이다.
// 새로운 유저 만들기(네이밍 옵션 : @localhost - 로컬에서만 접속 가능 / @% - 외부 접속 가능)
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';
// 유저 삭제하기
DROP USER 'user_name'@'localhost';
// 유저 권한 확인하기
SHOW GRANTS FOR 'user_name'@'localhost';
// 모든 db에 대한 권한 부여하기
GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'localhost';
// 선택적 권한 부여하기
GRANT type_of_permission ON db_name.table_name TO 'user_name'@'localhost';
// 권한 철회하기
REVOKE type_of_permission ON db_name.table_name FROM 'user_name'@'localhost';
// 변경사항 컨펌하기
flush privileges;