source

root@localhost를 가진 관리자로부터 "권한 거부" 오류가 발생했습니다.

goodcode 2022. 9. 20. 23:59
반응형

root@localhost를 가진 관리자로부터 "권한 거부" 오류가 발생했습니다.

관리자를 사용하여 MariaDB 데이터베이스에 연결하려고 하는데 로그인 버튼을 누르면 "Permission denied" 오류가 나타납니다.비밀번호가 틀렸을 경우 예상되는 "접근 거부"가 아닙니다.

MariaDB를 처음 사용하는데다 CentOS도 잘 모르는데 뭐가 문제인지 잘 모르겠어요.시스템에 대한 몇 가지 디버깅 및 설정을 다음에 나타냅니다.

PHP에서 MariaDB에 연결하면 다음과 같은 테스트 스크립트가 작동합니다.

<?php
$db = mysqli_connect('127.0.0.1','root','mypassword')
  or die(mysqli_error());
var_dump($db);

사용.mysql -h 127.0.0.1 -u root -p콘솔에서도 동작합니다.netstat을 확인하다mysqld리슨 중:

$ sudo netstat -tlpn | grep mysqld
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      16428/mysqld

MariaDB 보조금:

MariaDB [(none)]> show grants;
+--------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                        |
+--------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '...' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION                                    |
+--------------------------------------------------------------------------------------------------+

관리자 설정:

System: MySQL
Server: 127.0.0.1
Username: root
Password: mypassword
Database: (none)

내 시스템:

CentOS 7
Apache 2.4.6
PHP 5.4.16
MariaDB 10.1.16
Adminer 4.2.5

SELinux 설정이 잘못되어 있는 것이 주된 원인이지만, 이 문제에 영향을 주는 MariaDB 버그도 있습니다.

SELinux에 부울이 있습니다.httpd_can_network_connect_dbHTTP 서버 스크립트와 모듈이 데이터베이스 서버에 접속할 수 있는지 여부를 정의합니다.기본값은 입니다.off:

$ getsebool httpd_can_network_connect_db
httpd_can_network_connect_db --> off

이걸 돌리면on및 재시작* Apache를 사용하여 관리자로부터 접속할 수 있습니다.Server: 127.0.0.1:

sudo setsebool -P httpd_can_network_connect_db on
sudo systemctl restart httpd

*) 재기동할 필요가 있는지 잘 모르겠습니다.

다음을 사용하여 연결을 시도합니다.Server: localhost여전히 작동하지 않습니다.이는 SELinux 컨텍스트에 관한 MariaDB 10.1.16의 중대한 오류(MDEV-10405MDEV-10404)가 원인입니다.

이 버그에 대한 회피책은NoNewPrivileges=true설정.

파일 생성/etc/systemd/system/mariadb.service.d/myfix.conf:

# temporary fix for bug https://jira.mariadb.org/browse/MDEV-10404
[Service]
NoNewPrivileges=false

그런 다음 다음을 실행합니다.

sudo systemctl daemon-reload
sudo systemctl restart mariadb

언급URL : https://stackoverflow.com/questions/38673409/permission-denied-error-from-adminer-with-rootlocalhost

반응형