$ sudo yum install mysql-server
입력 시 'No package mysql-server available.' 에러가 나서 하단의 방법으로 설치했다.
$ wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ sudo yum localinstall mysql57-community-release-el7-8.noarch.rpm
$ sudo yum install mysql-community-server
위의 명령어로 설치가 끝난 줄 알았는데 $ mysql --version
입력 시 'mysql: command not found' 즉 mysql 설치가 안됐다.
(로그를 항상 잘 보자..)
The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
해당 블로그보고 추가적으로 gpgkey2022 설치하고 mysql 설치했다.
$ sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
$ sudo yum install mysql
mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
https://seong6496.tistory.com/324
해당블로그 중에 소켓오류 원인을 보려고 mysql 실행여부 확인해봤다.
inactive하길래 실행
$ sudo systemctl start mysqld
$ sudo systemctl status mysqld
실행된 mysql 상태 확인 후 다시 입력해봤더니 또 비밀번호를 입력하라고 뜬다. 이번에도 아무거나 눌러봤더니 아까와 다른 오류가 떴다.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
말이 오류이지 당연한 오류이다. 비밀번호를 아무거나 입력했으니 ...
내가 설치할 때 설정한 비밀번호가 없는데 대체 뭘 입력하라는건지 찾아보니 설치 시 임시비밀번호가 발급된다고 한다.
다른 블로그보면 처음 시작 시 비밀번호 없이 접속되고 그 이후에 비밀번호 설정할 수 있다는데 나는 왜 헷갈리게 나도 모르게 초기비밀번호가 생성되어있는건지
암튼
$ sudo su
명령어를 통해 꼭 권한을 root로 바꿔주자. 안그러면 다음 과정에서 Permission denied 뜬다.
$ cat /var/log/mysqld.log
로그들 사이에 임시 비밀번호가 보인다.
접속완료
접속하고 어떠한 명령어를 검색해도 해당 오류가 뜰 것이다.
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
비밀번호를 수정해야하는데 나는 mysql 5.7.x 버전이라 하단 명령어를 사용했다.
mysql> SET PASSWORD = PASSWORD('내가원하는비밀번호'); //조건이 까다로워요 대문자소문자숫자특수문자 포함
mysql> flush privileges; // 저장
mysql> use mysql;
mysql> select user from user;
보안과 작업 분리를 위해 사용자 계정을 따로 추가해주려한다.
mysql> create user '계정명'@'localhost' identified by '비밀번호'; // 내부ip접속허용
localhost 대신 %
사용시 외부ip접속 허용
mysql> grant all privileges on 스키마이름.* to 계정명@'localhost' identified by '비밀번호!' with grant option; // 스키마의 특정 테이블에만 권한 주고싶으면 * 대신 테이블명 작성
mysql> flush privileges; // 저장
mysql> show grants for 계정명@'localhost'; // 권한 확인
user 조회시 추가된 것 확인
https://stackoverflow.com/questions/53712228/no-package-msyql-server-available
https://goddaehee.tistory.com/292
https://aws.amazon.com/ko/premiumsupport/knowledge-center/rds-mysql-ssh-workbench-connect-ec2/