这是我第一次安装 LAMP。
我通过终端在 Ubuntu 16.04 上完美地安装了 Apache、PHP 和 MySQL。我最后安装的是 PHPMyAdmin。安装后,我不小心输入了我的用户名phpmyadmin
和密码。之后,当我尝试登录并创建数据库时,它显示No Privilege
。
我也尝试过默认的“root”,有密码和无密码,但仍然无法登录。然后我尝试重新安装它,而且我也尝试了dpkg-reconfigure
,但是它给了我一些错误消息,其中有中止、重试等选项。
我还尝试删除所有 PHPMyAdmin 数据/文件,并清除所有浏览历史记录以及我的 cookie。我尝试的最后一件事是使用替代数据库软件 - Adminer。安装该软件后,它没有要求我设置管理员帐户。
当我尝试使用它时,我无法登录,因为我不知道用户是什么。我尝试使用“root”或不使用密码,但仍然无法登录。当我尝试在 PHPMyAdmin 中登录我的帐户时,我很惊讶它工作正常并登录成功。不幸的是,我仍然无法创建数据库,并且它有一个类似的对话框PHPMyAdmin : 'Access denied for user 'phpmyadmin'@'localhost'
。
答案1
卸载 phpadmin 不会从 mysql 数据库中删除帐户。您可以手动执行此操作,但必须具有 root 访问权限。
您可以通过以下步骤恢复根访问权限。
从终端停止mysql服务,然后在没有授权表的情况下加载它。在下面的步骤中,$
符号后面的文字是您输入的命令。括号中的文字是解释和注释。
(停止数据库)
$ sudo systemctl stop mysql
(启动 Mysql 但不加载授权表)
$ sudo mysqld_safe --skip-grant-tables &
(现在以 root 身份登录 mysql,无需密码)
$ sudo mysql --user=root mysql
(使用以下命令设置 root 密码:)
mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
mysql>flush privileges;
mysql> quit;
(以“$”为提示符来终止安全模式服务器。输入“%”并按 ENTER 键)
$ %
Cntrl+c
(现在重新启动数据库,一切就绪)
$ sudo systemctl start mysql
请查看此答案以了解详情:
mysql 安装时不要求输入 root 密码
答案2
我正在寻找在 Ubuntu 22.04 上重置 MySQL 根密码的解决方案,并发现了这个问题和解决方案。
我记得在 Ubuntu 18.04 上安装 LAMP 时遵循了 LD James 概述的步骤。但是,它不适用于从 Ubuntu 存储库在 Ubuntu 22.04 上与 php 一起安装的 MySQL 发行版。
运行代码时
$ sudo mysqld_safe --skip-grant-tables &
它会引发以下错误。
$ sudo mysqld_safe --skip-grant-tables & [2] 4495 $ 2022-07-22T11:13:52.549114Z mysqld_safe 记录到“/var/log/mysql/error.log”。2022-07-22T11:13:52.550637Z mysqld_safe UNIX 套接字文件的目录“/var/run/mysqld”不存在。
[2]- 退出 1 sudo mysqld_safe --skip-grant-tables $ sudo mysql --user=root mysql 错误 2002 (HY000): 无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器 (2) $
这是因为文件路径 /var/run/mysqld 中的目录 mysqld 似乎不存在。
这就是我所做的(首先安装了 Canonical 的 Ubuntu 22.04 版 php )
确保mysql正在运行。
$ sudo systemctl start mysql
接下来,连接mysql
$ sudo mysql
你应该像
“欢迎使用 MySQL 监视器。命令以 ; 或 \g 结尾。您的 MySQL 连接 ID 为 8 服务器版本:8.0.29-0ubuntu0.22.04.2 (Ubuntu)...等等”
接下来在 mysql 提示符下运行:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
注意:将“password”替换为您要为 root 设置的密码。
该语句应返回“查询 OK,受影响 0 行(0.00 秒)”
退出mysql
mysql> exit
应该返回“Bye” 接下来以 root 身份登录并使用密码“YES”选项
$ mysql -u root -p
您现在可以使用设置的密码以 root 身份登录。
如果您愿意,您现在可以运行 mysql_secure_installation 来设置进一步的安全措施,例如授权插件。
$ sudo mysql_secure_installation;
请参阅这篇优秀的文章在 Digitial Ocean 上进一步阅读。