programing

MySQL 8.0에서의 phpMyAdmin

bestcode 2022. 9. 17. 10:47
반응형

MySQL 8.0에서의 phpMyAdmin


phpMyAdmin을 사용합니다..0.1phpMyAdmin 5.0.1을 사용하여


MySQL 8.0 서버와 phpMyAdmin을 설치했는데 브라우저에서 액세스하려고 하면 다음과 같은 오류가 발생합니다.

#2054 - The server requested authentication method unknown to the client
mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client

구현된 강력한 비밀번호와 MySQL 릴리즈의 상대적 신선도와 관련이 있을 것으로 생각합니다.

하지만 최신 드라이버 및 연결 구성에 대해서는 아는 바가 없습니다.

누군가 같은 문제에 직면하여 해결한 적이 있습니까? : D

루트 사용자로 MySQL 콘솔에 로그인합니다.

root@9532f0da1a2a:/# mysql -u root -pPASSWORD

다음 비밀번호로 인증 플러그인을 변경합니다.

mysql> ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
Query OK, 0 rows affected (0.08 sec)

기본 설정 인증 플러그인에 대한 자세한 내용은 MySQL 8.0 참조 설명서를 참조하십시오.

https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

도커라이즈된 환경에서 완벽하게 동작합니다.

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -p 3306:3306 -d mysql:latest

docker exec -it mysql bash

mysql -u root -pPASSWORD

ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

exit

exit

docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

이제 root / PASSWORD를 사용하여 http://localhost:8080에서 phpMyAdmin에 로그인할 수 있습니다.


mysql/mysql-server

mysql/mysql-server 도커 이미지를 사용하는 경우

그러나 이는 개발 환경에서 '빠르고 더러운' 솔루션일 뿐이라는 점을 명심하십시오.MySQL 기본 설정 인증 플러그인을 변경하는 것은 좋지 않습니다.

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

2018년 10월 4일 솔루션 갱신

MySQL의 코멘트를 기본 합니다.default_authentication_plugin=mysql_native_password/etc/my.cnf

본인 부담으로 사용하다

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

회피책 업데이트(2019년 1월 30일)

docker run --name mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -e MYSQL_ROOT_HOST=% -p 3306:3306 -d mysql/mysql-server:latest
docker exec -it mysql sed -i -e 's/# default-authentication-plugin=mysql_native_password/default-authentication-plugin=mysql_native_password/g' /etc/my.cnf
docker exec -it mysql mysql -u root -pPASSWORD -e "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'PASSWORD';"
docker stop mysql; docker start mysql
docker run --name phpmyadmin -d --link mysql:db -p 8080:80 phpmyadmin/phpmyadmin:latest

default_authentication_module

솔루션 업데이트(2021년 9월 13일)

mysql_native_password로 식별되는 사용자 'root'@'localhost'를 'password'로 변경합니다.

  • 따옴표 포함*

이 "MySQL 8.0.11"을 사용하고 .caching_sha2_password디폴트 인증 방식으로서 사용합니다.phpMyAdmin을 사용합니다. " " " " " " " " " " " " " " " " " " 등)을 사용하여 .CREATE USER xyz@localhost IDENTIFIED WITH mysql_native_password BY 'passw0rd'.

자세한 내용은 이쪽 https://dev.mysql.com/doc/refman/8.0/en/create-user.html 및 이쪽 https://dev.mysql.com/doc/refman/8.0/en/authentication-plugins.html

 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';

명령줄에서 로그인하면 그 후에 작동합니다.

저는 이 문제를 다음과 같이 해결했습니다.

  1. default_authentication_plugin = mysql_native_password
    .cnf의
  2. 하고 mysql을 하여 새 .CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
  3. 필요에 따라 권한을 부여합니다.예.GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost'; 다음에 또 한 번.FLUSH PRIVILEGES;
  4. 새 사용자로 phpmyadmin 로그인

다른 아이디어: phpmyadmin 및 기타 php 툴이 작동하지 않는 한 이 행을 파일 /etc/mysql/my.cnf에 추가하십시오.

default_authentication_plugin = mysql_native_password

다음 항목도 참조하십시오.Mysql 참조

이것이 보안상의 문제인 것은 알고 있습니다만, caching_sha2_password와 함께 툴이 동작하지 않으면 어떻게 해야 합니까?

시스템에 갔다.

preferences -> mysql -> initialize database -> 레거시 패스워드 암호화 사용(강력한 암호 사용) -> 입력한 패스워드

의 나 my my로서config.inc.php이치노저는 여전히 의심스러워서 apache와 mysql 서버를 중지하고 다시 시작했는데 작동 중입니다.

나는 기본적으로 Andras의 대답으로 내 문제를 해결했다:

1- 루트 사용자로 MySQL 콘솔에 로그인합니다.

root@9532f0da1a2a:/# mysql -u root -pPASSWORD

인증할 루트의 암호를 입력합니다.

2- 새 사용자를 만들었습니다.

mysql> CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';

3- 새 사용자에게 모든 권한을 부여합니다.

mysql> GRANT ALL PRIVILEGES ON *.* To 'user'@'hostname';

4 - 패스워드를 사용하여 인증 플러그인을 변경합니다.

mysql> ALTER USER user IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

이제 phmyadmin은 새 사용자를 로깅할 수 있습니다.

저는 '조회하다'에서 하나의 .mysql콘솔로 이동합니다.

다음을 사용하여 mysql 콘솔에 로그인하려면

mysql -u {username} -p{password}

그 후 다음과 같이 1개의 쿼리만 실행합니다.-

ALTER user '{USERNAME}'@'localhost' identified with mysql_native_password by '{PASSWORD}';

이 쿼리를 실행하면 쿼리가 실행되는 메시지가 나타납니다.그런 다음 사용자 이름/비밀번호로 PHPMYADMIN에 로그인합니다.

공식 mysql 도커 컨테이너를 사용하는 경우 다음과 같은 간단한 해결책이 있습니다.

도커 컴포지트 서비스에 다음 행을 추가합니다.

command: --default-authentication-plugin=mysql_native_password

설정 예:

mysql:
     image: mysql:8
     networks:
       - net_internal
     volumes:
       - mysql_data:/var/lib/mysql
     environment:
       - MYSQL_ROOT_PASSWORD=root
       - MYSQL_DATABASE=db
     command: --default-authentication-plugin=mysql_native_password

이 문제는 다음과 같이 해결했습니다.

  1. 시스템 기본 설정 -> mysql로 들어갑니다.

  2. "데이터베이스 초기화"를 선택하고 "기존 비밀번호 암호화 사용"을 선택하여 새 루트 비밀번호를 입력합니다.

  3. 새 비밀번호를 사용하여 phpmyadmin에 로그인합니다.

이 문제가 있어서 Windows에서 ini 파일을 찾을 수 없었지만, 해결 방법은 매우 간단했습니다.
instra를 .1. mysql instra를 엽니다.
2.서버를 합니다.2 . mysql 는 첫 입니다.첫 번째 링크입니다.
합니다.3 . 인증방식으로 이동합니다.
. 을 선택합니다.4 . '이렇게 하다'는 말이죠.
필드를 합니다.5 . 비밀번호(다음 필드)를 입력합니다.
합니다.6 . 변경을 적용합니다.

이상입니다. 고객님께도 제 솔루션이 잘 작동하길 바랍니다.

@kgr에서 설명한 바와 같이 MySQL 8.0.11에서는 인증방식이 변경되었습니다.

이에 대한 phpMyAdmin 버그 보고서를 열었습니다.https://github.com/phpmyadmin/phpmyadmin/issues/14220

MySQL 8.0.4-rc는 정상적으로 동작하고 있었습니다만, MySQL이 패치 레벨 릴리스에 이러한 변경을 가하는 것은 어처구니없는 일이라고 생각합니다.

를 사용하여 다른 사용자를 만듭니다.mysql_native_password옵션:

터미널:

mysql> CREATE USER 'su'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'su'@'localhost';
mysql> FLUSH PRIVILEGES;

다른 답변에서도 지적했듯이 MySQL의 기본 인증 플러그인을 네이티브로 변경하면 효과가 있습니다.

그래도 새로운 caching_sha2_password 플러그인을 사용할 수 없기 때문에 호환성이 개발되어 토픽이 닫힐 때까지 기다리겠습니다.

MySQL 8.0.12에서 다음을 실행하여 이 문제를 해결했습니다.

mysql_upgrade -u root

내 경우 루트 사용자를 수정하면 MySQL WorkBench와 같은 다른 응용 프로그램에서 네이티브 로그인 문제가 발생하기 때문에 이를 수정하기 위해 PhpMyAdmin에서 사용할 새 사용자를 만드는 것이 더 좋습니다.

제가 한 일은 다음과 같습니다.

  • 루트 사용자로 MySQL 콘솔에 로그인합니다.mysql -u root -p,당신의 패스워드를 입력하세요.
  • MySQL 쉘 내에 새 사용자를 만듭니다.
CREATE USER 'newMySqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlNewUsernamePassword';
  • 이 시점에서newMysqlUsername에는 데이터베이스 관련 작업을 수행할 수 있는 권한이 없습니다.따라서 사용자에게 필요한 정보에 접근할 수 있는 권한을 제공해야 합니다.
GRANT ALL PRIVILEGES ON * . * TO ' newMySqlUsername'@'localhost';
  • 새 사용자에 대해 설정할 권한을 완료한 후에는 항상 모든 권한을 새로고침해야 합니다.
FLUSH PRIVILEGES;
  • 입력하여 로그아웃하다quit또는\q이제 변경사항이 적용됩니다.새로운 사용자로 PhpMyAdmin에 로그인하면 데이터베이스에 액세스할 수 있습니다.

  • 또한 단말기에서 다음 명령을 사용하여 다시 로그인할 수도 있습니다.

mysql -u newMySqlUsername -p

나는 사용했다ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'PASSWORD';효과가 있었다

윈도우즈에서 실행 중인 경우 msi를 실행하여 설치를 재구성하여 인증을 변경할 수 있습니다.디폴트 인증을 레거시 인증으로 변경하도록 요구됩니다.그 후 이 옵션을 사용하여 인증을 레거시 인증으로 변경할 수 있습니다.

언급URL : https://stackoverflow.com/questions/49948350/phpmyadmin-on-mysql-8-0

반응형