MySQL에서 --skip-grant-tables 끄기

MySQL에서 --skip-grant-tables 끄기

저는 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

이 옵션을 어떻게 끄나요?

답변1

로그인 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

답변2

이 작업을 수행하려면 다음 단계를 사용할 수 있습니다.

[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의 일반 모드로 전환하고 비밀번호 없이 연결합니다.

이것은 확실히 당신에게 효과가 있을 것입니다.

답변3

MySQL을 정상적으로 중지했다가 다시 시작하면 됩니다.

답변4

어제 비슷한 문제가있었습니다. 서버는 운영 체제로 Amazon Linux 2를 사용하고 설치 방법으로 공식 yum 저장소(el7용)를 사용합니다.

특히 MySQL의 공식 yum 저장소를 사용하는 경우 MySQL은 systemd 서비스로 설치됩니다. 이 경우 다음 명령을 실행하여 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-tablessystemd에서 설정한 환경 변수를 확인하려면 를 실행 sudo systemctl show하고 찾을 수 있습니다 Environment=.

이 환경 변수를 변경하기 위해 다음 명령을 실행했습니다.

sudo systemctl set-environment MYSQLD_OPTS=""

이 작업을 수행한 후 mysqld 서비스를 다시 시작했는데 sudo service mysql restart모든 것이 잘 작동했습니다.

관련 정보