无法以root身份输入phpmyadmin(MySQL 5.7)
我正在使用Ubuntu桌面16.04(从15.10升级)。
我从apt-get install phpmyadmin
。 如果我去localhost/phpmyadmin
但它无法以root用户身份登录它。
我经常搜索它。 我找到了许多来源,他们建议改变/etc/phpmyadmin/config.inc.php
并用’root’和”替换用户和密码(密码为空)。 但我的config.inc.php
与他们不同。 例如,在我的文件中,没有用户和密码的行,它似乎从另一个文件/etc/phpmyadmin/config-db.php
自动获取。 尽管如此,我已经更改了该文件中的用户和密码,但现在我收到此错误:
#1698 - Access denied for user 'root'@'localhost'
我该做什么?
Phpmyadmin版本:4.5.4.1deb2ubuntu1
mysql Ver 14.14 Distrib 5.7.12,适用于Linux(x86_64),使用EditLine包装器
MySQL 5.7改变了安全模型:现在MySQL root
登录需要一个sudo
。
即,phpMyAdmin将无法使用root
凭据。
最简单(也是最安全)的解决方案是创建新用户并授予所需权限。
1.连接到mysql
sudo mysql --user=root mysql
2.为phpMyAdmin创建用户
运行以下命令(将some_pass
替换some_pass
所需的密码):
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
如果你的phpMyAdmin连接到localhost,这应该就足够了。
3.可选:允许远程连接
请记住 :允许远程用户拥有所有权限是一个安全问题。
考虑到这一点,如果您希望此用户在远程连接期间具有相同的权限,则另外运行(使用步骤2中使用的密码替换some_pass
):
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
4.更新phpMyAdmin
使用sudo
,编辑/etc/dbconfig-common/phpmyadmin.conf
文件,在以下部分更新用户/密码值(用步骤2中使用的密码替换some_pass
):
# dbc_dbuser: database user # the name of the user who we will use to connect to the database. dbc_dbuser='phpmyadmin' # dbc_dbpass: database user password # the password to use with the above username when connecting # to a database, if one is required dbc_dbpass='some_pass'
使用带有phpmyadmin的mariaDB(Ubuntu 16.04LTS)时,我遇到了同样的问题。
先决条件:
1)安装MariaDB
sudo apt-get -y install mariadb-server mariadb-client sudo mysql_secure_installation (answer to some interactive questions): Enter current password for root (enter for none): Set root password: n Remove anonymous users: n Disallow root login remotely: n Remove test database and access to it: n Reload privilege tables now: Y
如果要卸载mariaDB
:
sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5 sudo rm -rf /etc/mysql /var/lib/mysql sudo apt-get autoremove sudo apt-get autoclean
2)安装phpmyadmin
sudo apt-get -y install phpmyadmin (and answer some interactive questions) Configuring phpmyadmin: Web server to reconfigure automatically: apache2 Configure database for phpmyadmin with dbconfig-common: Yes MySQL application password for phpmyadmin:
3)在apache2中,创建一个phpmyadmin的符号链接
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf sudo a2enconf phpmyadmin.conf sudo service apache2 restart
好的,现在,如果你按照Rael的说明,你将能够登录到phpmyadmin
,但是,至少对我来说,我无法创建新的数据库,因为出现了一条红色消息: No privileges
(或者类似的信息)
解决方法是重新配置phpmyadmin,并回答一些互动问题。
sudo dpkg-reconfigure phpmyadmin Reinstall database for phpmyadmin: Connection method for MySQL database server for phpmyadmin: TCP/IP Host name of the MySQL database server for phpmyadmin: localhost Port number for the MySQL service: 3306 MySQL database name for phpmyadmin: phpmyadmin MySQL username for phpmyadmin: root MySQL application password for phpmyadmin: pass # OR ANY PASSWORD YOU WANT Password confirmation: pass Name of the database's administrative user: root Web server to reconfigure automatically: apache2 An error occurred while installing the database: ignore
现在,如果您尝试使用连接到phpmyadmin( localhost/phpmyadmin
)
username: root password: pass
你将能够创建数据库。
在Ubuntu 16.04 for Mysql 5.7中检查下表信息并执行必要的设置:
mysql> SELECT User, Host, plugin FROM mysql.user; +------------------+-----------+-----------------------+ | User | Host | plugin | +------------------+-----------+-----------------------+ | root | localhost | auth_socket | | mysql.session | localhost | mysql_native_password | | mysql.sys | localhost | mysql_native_password | | debian-sys-maint | localhost | mysql_native_password | | phpmyadmin | localhost | mysql_native_password | | root | % | mysql_native_password | +------------------+-----------+-----------------------+
检查root是否有auth_socket插件,然后在命令下运行:
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit;
为了完整起见,我找到了使用MariadB版本10.1.23时遇到麻烦的解决方案。 用于设置新用户的语法类似于上面从@Rael Gugelmin Cunha报道的post,我在这里提出了我的解决方案,以便参考面临同样问题的其他人:
root@raspberrypi:# sudo mysql --user=root mysql use mysql; CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_password'; GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
问候
提到Rael Cunha:
是的他的解决方案是有效的,我已经尝试了其他人 但是,在/etc/dbconfig-common/phpmyadmin.conf
类的配置文件中引用具有公开密码的用户看起来像是系统范围操作的安全漏洞。
所以我宁愿建议关于MariaDB 10.1.x
的问题(some_user和some_pass将是你可能想到的任何东西):
# mysql -u root use mysql; CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON \*.\* TO 'some_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
并按原样保留phpadmin setup(4)。
之后使用您自己的凭据登录phpmyadmin
在我自己的设置中,出于安全目的,我将’%’替换为’localhost’,但如果您的服务器上关闭了端口3306,则不一定会给您带来安全风险。
如果phpymadmin无法连接,可能是由于auth机制设置为auth_socket
。 您可以将其更改为使用常规密码,如下所示:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_password";
刚刚在Ubuntu 18.04的干净安装上我正在努力解决这个问题,这就是它的工作原理。 这里有一篇不错的文章解释更多:
https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/
我有同样的问题,我遵循了大部分建议,但没有一个对我有用! 当我在浏览器中打开localhost / phpmyadmin时,我的问题是相同的,它要求登录详细信息。
我正在添加root作为用户。 我知道的密码是正确的。 我得到#1698 – 用户’root’@’localhost’拒绝访问
它只是使用phpmyadmin作为用户而不是root,并且已知密码并打开。
希望这对任何人都有帮助,有点可笑我有多么忽略它。 但是为我工作时出现了这个错误#1698 – 用户“root”访问被拒绝@“localhost”
只有下面的代码适用于ubuntu 18.04,php 7以上和mysql 5.7
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
不要替换’phpmyadmin’。 创建任何其他用户没有像创建新用户那样的完全权限,为该用户分配数据库权限。 只有phpmyadmin用户才能获得完全访问权限。
如果你安装MySQL单独停止它通过以下命令sudo / opt / lampp / lampp stop service mysql stop sudo / opt / lampp / lampp start