Ubuntu 20.04 设置mysql phpmyadmin root密码

Umb*_*ers 3 mysql passwords phpmyadmin root ubuntu-20.04

我在 Ubuntu 20.04 上安装了 LAMP。

(德语) https://wiki.ubuntuusers.de/MySQL/Werkzeuge/

获取 root 密码登录 localhost/phpmyadmin 始终是一个问题。在 Ubuntu 18.04 中有一个很好的教程(几个):

SERVER BEENDEN:
  sudo service mysql stop
  sudo mkdir -p /var/run/mysqld
  sudo chown mysql:mysql /var/run/mysqld
  sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
PRÜFEN MIT:
  jobs
STARTEN von MYSQL:
  mysql -u root
    mysql> FLUSH PRIVILEGES;
    mysql> USE mysql; 
    mysql> UPDATE user SET authentication_string=PASSWORD("NEWPASSWORD") WHERE user='root';
    mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';
    mysql> quit
  sudo pkill mysqld
  sudo service mysql start
Run Code Online (Sandbox Code Playgroud)

在实际的 ubuntu 版本中,似乎不知道 PASSWORD 命令。我收到以下错误。

mysql>UPDATE user SET authentication_string=password('YOURNEWPASSWORD') WHERE user='root';

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 '('YOURNEWPASSWORD') WHERE user='root'' 附近使用的正确语法

我的mysql版本:

mysql 版本 8.0.19-0ubuntu5 适用于 x86_64 上的 Linux ((Ubuntu))

Jon*_*ler 10

这个谜题有几个部分

更改密码

从 CLI 以 root 身份登录:

sudo mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

然后

ALTER USER 'root'@'localhost' IDENTIFIED BY '<New-Password-Here>';
Run Code Online (Sandbox Code Playgroud)

真正让事情运转起来

来自 phpmyadmin.net

由于 MySQL 身份验证方法的更改,7.4 之前的 PHP 版本无法对 MySQL 8.0等等 https://bugs.php.net/bug.php?id=76243进行身份验证。

有一个变通方法,那就是将您的用户帐户设置为使用当前样式的密码哈希方法 mysql_native_password。这种不幸的缺乏协调导致不兼容影响到所有 PHP 应用程序,而不仅仅是 phpMyAdmin。

所以

UPDATE user SET plugin="mysql_native_password" WHERE user='root';
Run Code Online (Sandbox Code Playgroud)

真正让事情运转起来……真的

MySQL 已更改其安全模型,现在 root 登录需要 sudo。这对 CLI 来说没问题,但这意味着PhpMyAdmin 和所有其他客户端将无法使用 root 凭据

最好的解决方案是为 PhpMyAdmin 创建一个新用户(或者使用现有的用户,如果它是在安装过程中创建的)并授予它所需的权限。

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY '<New-Password-Here>';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

在您想要“root”访问权限的任何地方使用此用户。


还要确保您使用的是最新版本的 PHP。这是我的完整安装脚本

PHP

sudo apt install -y php7.4
sudo apt install php7.4-curl php7.4-gd php7.4-json php7.4-mbstring php7.4-xml
Run Code Online (Sandbox Code Playgroud)

APACHE

sudo apt install apache2 libapache2-mod-php7.4
Run Code Online (Sandbox Code Playgroud)

MYSQL

sudo apt install mysql-server php7.4-mysql
sudo mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)

管理员

sudo apt install phpmyadmin
Run Code Online (Sandbox Code Playgroud)