저는 Centos 7을 사용하고 있으며 vagrant 설정 중에 mysql 5.7을 설치하는 스크립트를 작성하려고 합니다. 루트 비밀번호를 수동으로 변경하는 방법을 알고 있는데 스크립트에 어떻게 작성하나요?
나는 이미 이것을 가지고 있습니다:
wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum -y localinstall mysql57-community-release-el7-7.noarch.rpm
yum -y install mysql-community-server
service mysqld start
제가 아는 수동 작업은 다음과 같습니다. 임시 비밀번호 받기
grep 'temporary' /var/log/mysqld.log
그런 다음 메시지가 표시되면 입력하고 pass를 입력했습니다.
mysql -u root -p
Enter Passwword:
그런 다음 패스를 변경하거나 mysql_secure_installation을 실행하십시오.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Newhakase-labs123@';
flush privileges;
답변1
Google Cloud의 CentOS 7.5 인스턴스에 대해 이러한 명령을 테스트했습니다. 스크립트 실행이 완료되면 새 비밀번호를 사용하여 데이터베이스 서버에 로그인할 수 있습니다.
#!/bin/bash
# Description: Set up MySQL Community Release 5.7
# Get the repo RPM and install it.
wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum -y install ./mysql57-community-release-el7-7.noarch.rpm
# Install the server and start it
yum -y install mysql-community-server
systemctl start mysqld
# Get the temporary password
temp_password=$(grep password /var/log/mysqld.log | awk '{print $NF}')
# Set up a batch file with the SQL commands
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Newhakase-labs123@'; flush privileges;" > reset_pass.sql
# Log in to the server with the temporary password, and pass the SQL file to it.
mysql -u root --password="$temp_password" --connect-expired-password < reset_pass.sql