来自Adminer的root权限被拒绝的错误@ localhost

问题描述:

我试图用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 

主要的原因是错误的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