이번에 MySQL 세팅을 다시 하면서 다시 검색하는 번거로움을 줄이고자 정리해본다!
1. 서버 접속
$ mysql -u root -p
- 이때 -u 옵션은 user를 뜻하고 -p 옵션은 password를 뜻한다.
- 이때 접속하고자 하는 사용자를 선택한다.
2. 사용자 추가
CREATE USER 'user-name'@'localhost' IDENTIFIED BY 'user-password'
FLUSH PRIVILEGES;
이렇게 수정을 해주고 FLUSH PRIVILEGES; 명령어를 사용하게 되는데 FLUSH는 버퍼 내용을 지우고 버퍼링된 데이터를 파일에 저장해준다. 그래서 위에서 변경한 내용이 적용시켜 주는 명령어이다.
3. 유저 정보 확인하기
SELECT USER, HOST FROM mysql.user;
3. 사용자에게 DB 권한 부여
GRANT ALL PRIVILEGES ON 'DB명'.* to 'user-name'@'localhost';
이렇게 생성한 사용자를 localhost로 지정하면 내부에서 해당 db에 접속할 수 있다.
그러면 workbench 등 외부에서 접속할 때는 어떻게 해야할까.
이때는 해당 ip에서 접속 가능한 Host를 만들거나 모든 접속이 가능한 % Host를 만들면 된다.
4. 계정 비밀번호 변경
UPDATE mysql.user SET authentication_string = PASSWORD('NEW_USER_PASSWORD')
WHERE User = 'user-name' AND Host = 'localhost';
FLUSH PRIVILEGES;
위와 같은 명령어를 사용했을 때 오류가 발생했다.
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
그리고 알게 된 사실은 PASSWORD 라는 내장함수가 현재 버전에서는 삭제되었다는 것이었다.
그래서 위의 방법은 5.7.5 이전 버전에서 사용할 수 있다.
ALTER USER '유저명' IDENTIFIED WITH caching_sha2_password BY '변경할비밀번호';
다음 명령어로 비밀번호를 변경할 수 있었다.
5. 사용자를 외부에서도 접근할 수 있도록 추가
새로 만든 유저가 외부에서 접근이 되지 않는 경우도 있었다.
그래서 이때는 host를 localhost가 아닌 % 호스트로 추가해주어 해결할 수 있다.
CREATE USER 'new-user'@'%' IDENTIFIED BY 'new-password';
GRANT ALL PRIVILEGES ON 'DB명'.* TO 'new-use'@'%';
FLUSH PRIVILEGES;
6. 비밀번호 정책 변경하기
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
비밀번호를 수정할 때 다음과 같은 오류가 생겼다.
그래서 password와 관련된 정책에 대해서 조회해보자.
SHOW VARIABLES LIKE 'validate_password%'
현재 나는 policy를 LOW로 변경한 상태이다.
다시 MEDIUM으로 변경하기 위해서는 다음 명령어를 사용하면 된다.
SET GLOBAL validate_password.policy=MEDIUM;
이때 비밀번호 길이 설정이나 user_name이 패스워드에 있는지 확인 여부 등 여러가지 세부 설정을 변경할 수 있다.
7. csv파일 테이블에 넣기
csv 파일을 넣어줄 때 다음과 같은 오류가 생겼다.
ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides
그래서 아래 명령어를 통해 local_infile이 on 상태인지 확인했다.
show global variables like 'local_infile';
그 다음 이렇게 local_infile을 허락해준다.
set global local_infile=true;
이때 접속 방법은 두가지가 있다.
sudo mysql --local-infile=1 -u super -p
mysql --local_infile -u root -p
'프로젝트 개발 기록 > [개발] trouble shooting' 카테고리의 다른 글
잃고나니 보이는 것들... 랜섬웨어 (2) | 2022.10.18 |
---|---|
React app build 해서 배포했는데 CSS 적용 안되는 에러 해결 방법 (2) | 2022.07.01 |
React build해서 배포할 때 sourcemap 제거 (0) | 2022.07.01 |
[Flask] AttributeError: module 'jwt' has no attribute 'decode' 오류 해결 방법 (0) | 2022.06.30 |
댓글