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 계정의 비밀번호를 설정한다.
sudo mysql_secure_installations
- 1. 비밀번호 복잡성 설정 여부 선택
- 실습용이므로 해제
- 2. Anonymous User (익명 유저)
- 현재 과정에서 해당 사항은 고려할 필요가 없으므로, 생성하였다.
- 3. root 접속 권한
- Local에만 허용할 지 원격 접속도 허용할 지 여부인데, 허용하였다.
- 4. TEST DB 생성 여부
- TEST DB인데, 일단 허용하였다.
- 5. Privilege Table Reload 여부
- 이미 사전에 변경사항이 있으므로 Reload 허용하지 않았다.
해당 부분은 다시 설정할 수 있다.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Port 번호는 사용자가 원하는 임의의 번호로 변경하고,
IP는 주석처리하여 어디서든 접속할 수 있도록 설정한다.
MySQL 재실행 후 동작하는지 확인한다.
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
생성 확인
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;
최종 데이터 셋