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 참조 설명서를 참조하십시오.
도커라이즈된 환경에서 완벽하게 동작합니다.
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
솔루션 업데이트(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';
명령줄에서 로그인하면 그 후에 작동합니다.
저는 이 문제를 다음과 같이 해결했습니다.
default_authentication_plugin = mysql_native_password
.cnf의- 하고 mysql을 하여 새 .
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
- 필요에 따라 권한을 부여합니다.예.
GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost';
다음에 또 한 번.FLUSH PRIVILEGES;
- 새 사용자로 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
이 문제는 다음과 같이 해결했습니다.
시스템 기본 설정 -> mysql로 들어갑니다.
"데이터베이스 초기화"를 선택하고 "기존 비밀번호 암호화 사용"을 선택하여 새 루트 비밀번호를 입력합니다.
새 비밀번호를 사용하여 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
'programing' 카테고리의 다른 글
MySQL 사용자 DB에 암호 열이 없습니다 - OSX에 MySQL 설치 (0) | 2022.09.17 |
---|---|
WHERE IN 절에 지정된 순서에 따라 행을 정렬합니다. (0) | 2022.09.17 |
Vuex 플러그인을 동적으로 등록하시겠습니까? (0) | 2022.09.17 |
업로드한 파일을 디렉토리에 저장하기 전에 이름을 변경하는 방법 (0) | 2022.09.17 |
프로덕션 환경 및/또는 상업적 목적으로 사용할 수 있는 무료 버전의 Java는 무엇입니까? (0) | 2022.09.17 |