仅当使用 sudo 时,才能以 root 身份登录 MySQL

仅当使用 sudo 时,才能以 root 身份登录 MySQL

我在 Ubuntu 20.04 上安装了默认版本的 mysql。但是如果不使用 sudo,我似乎无法以 root 身份登录。这是对新版本的限制吗?我确定在以前的 Ubuntu 版本(14.04、12.04 等)上不是这样的。

mysql --user=root -p
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

sudo mysql --user=root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 80
Server version: 8.0.22-0ubuntu0.20.04.3 (Ubuntu)

答案1

这是有意为之的功能。唯一被允许连接到 MySQL 服务器的人应该root是服务器的所有者。其他人都不能。当然,这确实给那些希望拥有一个可以对 MySQL 实例进行任何操作的帐户的人带来了问题,例如开发人员和周末服务器管理员。

我的建议是:在 MySQL 中创建一个具有提升权限的帐户,仅有的您使用的。如果此 MySQL 安装还用于应用程序和网站,请为每个应用程序和网站创建单独的帐户,仅为其所需的数据库授予足够的权限。

以下是在 MySQL 中创建提升帐户和普通帐户的方法:

  1. 以以下身份登录 MySQLroot

  2. 创建一个新的管理员用户:

    CREATE USER 'admin'@'localhost' IDENTIFIED BY 'SuperSecretPassword!123';
    GRANT ALL ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
    

    如果您将从服务器外部连接到 MySQL,也请执行以下操作:

    CREATE USER 'admin'@'%' IDENTIFIED BY 'SuperSecretPassword!123';
    GRANT ALL ON *.* TO 'admin'@'%' WITH GRANT OPTION;
    
  3. 创建特定于应用程序的帐户(例如 WordPress):

    CREATE USER 'wp'@'localhost' IDENTIFIED BY 'SuperSecretPassword!123';
    GRANT ALL ON `wp`.* TO 'wp'@'localhost';
    

    对每个应用程序执行此操作,确保它们不能访问彼此的数据库。

  4. 刷新权限以确保一切都已设置:

    FLUSH PRIVILEGES;
    

希望这可以帮助

相关内容