2016-07-30 38 views
0

我試圖用Adminer連接到MariaDB數據庫,但是當我按下登錄按鈕時,我得到了「Permission denied」錯誤。請注意,這是不是「訪問被拒絕」,如果我的預期是這樣的話。密碼錯誤。來自Adminer的root權限被拒絕的錯誤@ localhost

這是使用MariaDB的我第一次,我也挺新的CentOS,做我不確定什麼是錯在這裏。下面列出了有關我的系統的一些調試和設置。

從PHP連接到MariaDB可行,例如,這個測試腳本:

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

從控制檯也適用,並且還netstat使用mysql -h 127.0.0.1 -u root -p確認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 [email protected]                  | 
+--------------------------------------------------------------------------------------------------+ 
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '...' WITH GRANT OPTION | 
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION         | 
+--------------------------------------------------------------------------------------------------+ 

設置在Adminer:

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 

回答

1

主要的原因是錯誤的SELinux的設置,但也影響這個關鍵MariaDB的錯誤。

SELinux的具有布爾httpd_can_network_connect_db限定HTTP服務器腳本和模塊是否能夠連接到數據庫服務器或沒有。默認爲off

$ getsebool httpd_can_network_connect_db 
httpd_can_network_connect_db --> off 

打開這個on並重新啓動Apache的*允許從Adminer使用Server: 127.0.0.1連接:

sudo setsebool -P httpd_can_network_connect_db on 
sudo systemctl restart httpd 

*)我不知道是否真的需要重新啓動。

有趣的嘗試使用Server: localhost仍然無法正常工作進行連接。這是因爲在MariaDB的10.1.16關於SELinux的上下文致命錯誤的:MDEV-10405 & MDEV-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