Linux를 처음 사용하지만 Amazon ec2 인스턴스에서 MySQL 데이터베이스를 설정하고 있습니다. --skip-grant-tables
MySQL 옵션을 사용하여 사용자 로그인 패스를 재설정하는 방법을 찾았습니다 . 이제 사용자를 추가하려고하는데 해당 옵션을 끄는 방법을 알 수 없습니다.
이것이 내가하려고하는 일입니다.
mysql> GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON ...my db username and pass
하지만이 오류가 발생합니다.
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
이 옵션을 끄려면 어떻게합니까?
답변
정상적으로 MySQL을 중지했다가 다시 시작하십시오.
답변
mysql에 로그인
mysql -u root -p
그런 다음 다음을 실행하십시오.
FLUSH PRIVILEGES;
http://dev.mysql.com/doc/refman/5.0/en/server-options.html
http://dev.mysql.com/doc/refman/5.0/en/mysqladmin.html
답변
아래 단계를 사용하여이 작업을 수행 할 수 있습니다.
[root@backups1 mysql5.7]# bin/mysqld_safe --skip-grant-tables --user=mysql
비밀번호없이 mysql에 연결하십시오.
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '';
mysql> flush privileges;
mysql의 일반 모드로 전환 한 다음 암호없이 연결하십시오.
이것은 분명히 당신을 위해 일할 것입니다.
답변
어제 비슷한 문제가 발생했습니다. 서버는 Amazon Linux 2를 OS로 사용하고 공식 yum 저장소 (el7 것)를 설치 수단으로 사용했습니다.
특히 공식 yum repo의 MySQL을 사용하는 경우 MySQL은 시스템 서비스로 설치됩니다. 이 경우 다음 명령을 실행하여 MySQL 프로세스가 시작되는 방법을 확인할 수 있습니다 sudo service mysql status -l
. 결과적으로 현재 mysql 서비스의 현재 상태가 설명됩니다. 그 설명 중 다음 줄을 찾을 수 있습니다.
Process: 26474 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
내 환경에서 MYSQLD_OPTS
변수는 --skip-grant-tables
systemd 프로세스에 의해 value 옵션 으로 설정되었습니다 . systemd에서 설정 한 환경 변수를 확인하기 sudo systemctl show
위해로 시작하는 행을 찾아서 찾을 수 있습니다 Environment=
.
이 환경 변수를 변경하기 위해 다음 명령을 실행했습니다.
sudo systemctl set-environment MYSQLD_OPTS=""
이 작업 후에 의해 mysqld 서비스를 다시 시작했으며 sudo service mysql restart
모든 것이 완벽하게 작동했습니다.