MySQL 설치

CHAN LIM·2023년 12월 25일
0

Engineer Basis

목록 보기
5/7


1. DB 설치 및 DATA 삽입

1.1 MySQL 설치

MySQL은 Ubuntu에서 패키지로 바로 설치가 가능하다.

sudo apt-get update
sudo apt install mysql-server

MySQL 설치 후 실행하고 root에 접속하려고 하니 Error.

ERROR 1698 (28000): Access denied for user 'root'@'localhost' 해결방법

sudo mysql -u root -p

Enter Password가 뜬다면 아무것도 입력하지 않은 상태에서 Enter

  • sudo 권한으로 mysql 실행한 상태

root 비밀번호 설정을 위해 해당 명령줄을 입력

SELECT User, Host, plugin FROM mysql.user;

#root의 plugin이 auth_socket로 설정 되있을텐데 이것을 mysql_native_password로 변경해주면 된다.

update user set plugin='mysql_native_password' where user='root';

ERROR 1046 (3D000): No database selected

  • DB 선택이 안되어있다는 오류이다.
    • 따라서 Database를 선택해주면 해결된다.
    SHOW databases;
    USE mysql;

이후, mysql_native_password로 변경해주면 된다.

update user set plugin='mysql_native_password' where user='root';
flush privileges;
select user, host, plugin from user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '비밀번호입력';

마지막 명령줄로 root 계정의 비밀번호를 설정한다.


1.2 MySQL 보안 설치 관련

sudo mysql_secure_installations
  • 1. 비밀번호 복잡성 설정 여부 선택
    • 실습용이므로 해제
  • 2. Anonymous User (익명 유저)
    • 현재 과정에서 해당 사항은 고려할 필요가 없으므로, 생성하였다.
  • 3. root 접속 권한
    • Local에만 허용할 지 원격 접속도 허용할 지 여부인데, 허용하였다.
  • 4. TEST DB 생성 여부
    • TEST DB인데, 일단 허용하였다.
  • 5. Privilege Table Reload 여부
    • 이미 사전에 변경사항이 있으므로 Reload 허용하지 않았다.

      해당 부분은 다시 설정할 수 있다.


1.3 MySQL 외부 접속 허용

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Port 번호는 사용자가 원하는 임의의 번호로 변경하고,
IP는 주석처리하여 어디서든 접속할 수 있도록 설정한다.

MySQL 재실행 후 동작하는지 확인한다.

1.4 User 생성

use mysql;
CREATE USER 'user1'@'%' IDENTIFIED BY '1';
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%';
FLUSH PRIVILEGES;

사용자 비밀번호 설정

ALTER USER 'user1'@'%' IDENTIFIED WITH mysql_native_password by '~~~';
FLUSH privileges

생성 확인

1.5 DB, Table, Data 생성

CREATE TABLE TEST2(
	ID INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(32) NOT NULL
    ) ENGINE=INNODB;
    
SHOW TABLES;

SELECT * FROM TEST2;

# ID 지정
INSERT INTO TEST2(ID, NAME) VALUES((INT), (VARCHAR));
# ID 비지정 - 자동으로 숫자 증가 삽입
INSERT INTO TEST2(NAME) VALUES((VARCHAR));

SELECT * FROM TEST2;

최종 데이터 셋


profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글