我已经搜索了以前的帖子好几天了......但似乎没有解决办法,我冒着“重复发帖”的风险......
问题: PHPMYADMIN 安装完美,但我的用户甚至没有基本权限(即删除、创建、授予等)。因此我无法在本地主机开发服务器上为 wordpress 和 drupal 创建数据库。
基本信息
全新安装 Ubuntu 18.04
Linux rider1 5.3.0-53-generic #47~18.04.1-Ubuntu SMP Thu May 7 13:10:50 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Apache2
Server version: Apache/2.4.29 (Ubuntu)
MySQL 5.7
mysql Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using EditLine wrapper
PHP 7
PHP 7.2.24-0ubuntu0.18.04.6 (cli) (built: May 26 2020 13:09:11) ( NTS )
问题详情:我有两个 mysql 用户root和phpmyadmin,都应该具有“超级用户”权限,但是每次我尝试授予权限和/或通过 mysql 使用任一用户创建数据库时,都会分别出现以下错误:
GRANT PRIVILEGES: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
CREATE DATABASE: ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'wp_db'
神秘
当我通过浏览器登录 PHPMYADMIN 时,每个用户缺少的默认数据库都不同。这是我为我的root
用户看到的:
笔记: 单击Check privileges
仅会导致出现一条确认没有权限的消息。
当我以用户身份登录 PHPMYADMIN 时phpmyadmin
,我看到的内容如下:
笔记:再次单击Check privileges只会导致出现一条消息,指出我对数据库没有权限。
此外,在 phpmyadmin 中,我没有任何Users选项Privileges卡可以单击来添加用户和/或权限。
此外,当我从命令行登录 MySQL 时,使用命令SHOW GRANTS
和SHOW DATABASES
用户我会得到上面的屏幕截图中显示的信息的确认。root
phpmyadmin
我尝试过的解决方案:
1.) 我通过以下方式安装了 LAMP tasksel
,并确认它安装完美http://localhost/phpinfo.php
:sudo apache2ctl configtest
2.) 我已经完全卸载、清除并重新安装了 phpmyadmin
3.) 我确认 apache2 已正确配置为使用 phpmyadmin,方法是ls /etc/apache2/conf-available/
:ls /etc/apache2/conf-enabled/
4.) 我尝试了回复中列出的所有建议的解决方案类似的问题在这里找到.包括跑步:
sudo systemctl stop mysql
sudo dpkg-reconfigure mysql-server-5.7
sudo systemctl start mysql
其产生了以下结果:
myuser@mymachine:~$ sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.server_cost OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
The sys schema is already up to date (version 1.5.2).
Checking databases.
phpmyadmin.pma__bookmark OK
phpmyadmin.pma__central_columns OK
phpmyadmin.pma__column_info OK
phpmyadmin.pma__designer_settings OK
phpmyadmin.pma__export_templates OK
phpmyadmin.pma__favorite OK
phpmyadmin.pma__history OK
phpmyadmin.pma__navigationhiding OK
phpmyadmin.pma__pdf_pages OK
phpmyadmin.pma__recent OK
phpmyadmin.pma__relation OK
phpmyadmin.pma__savedsearches OK
phpmyadmin.pma__table_coords OK
phpmyadmin.pma__table_info OK
phpmyadmin.pma__table_uiprefs OK
phpmyadmin.pma__tracking OK
phpmyadmin.pma__userconfig OK
phpmyadmin.pma__usergroups OK
phpmyadmin.pma__users OK
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
我已经阅读了其他问题/解决方案两天了,但没有一个与我的 LAMP/OS 配置(mysql 5.7 和 ubuntu 18.04)相匹配,而且绝大多数都假设用户的权限有效。
有人知道如何解决这个问题吗?
谢谢
答案1
问题原因:
如果您尝试安装 myphpadmin,遇到任何问题,然后决定完全卸载 phpmyadmin....当 myphpmyadmin 询问您是否要删除相关数据库、用户权限和配置时,请不要选择“是”。相反,选择“否”,然后卸载完成,sudo apt-get autoremove
以摆脱已安装的附加软件包。
如果选择“是”(问题原因继续):
卸载过程会删除 mysql 正常运行所必需的一个极其重要的目录。即,/var/run/mysqld
到重建重要目录,使用以下命令:
sudo mkdir -v /var/run/mysqld && sudo chown mysql /var/run/mysqld
执行此命令后您应该能够root
使用以下命令重新建立您的用户权限:
sudo mysqld --skip-grant-tables &
,然后
sudo mysql -u root mysql
,并GRANT ALL ON *.* TO 'user'@'localhost' with GRANT OPTION;
从mysql>
提示符开始。
在此刻:我决定完全重新安装 phpmyadmin,因为即使我恢复了超级用户权限,一些默认安装数据库仍然缺失。但是,这次当系统询问我是否要删除默认数据库、用户权限和配置时,我选择了“否”。然后我sudo apt-get autoremove phpmyadmin && sudo apt-get purge phpmyadmin
删除了所有已安装的附加软件包。
一旦我运行sudo apt install phpmyadmin php-mbstring php-gettext
,, sudo phpenmod mbstring
phpmyadminsudo phpenmod mbstring
就能完美运行。
答案2
如果您在命令行登录时丢失权限,那么这不是 PhpMyAdmin 问题。您是否尝试过以下解决方案https://stackoverflow.com/questions/1709078/how-can-i-restore-the-mysql-root-user-s-full-privileges
使用该选项停止mysqld
并重新启动它。只需使用以下方法--skip-grant-tables
连接到服务器:(即无选项,可能不需要用户名)。mysqld
mysql
-p
在 mysql 客户端中发出以下命令:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
此后,您就可以运行它GRANT ALL ON *.* TO 'root'@'localhost';
并让它工作了。