我在 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 中创建提升帐户和普通帐户的方法:
以以下身份登录 MySQL
root
创建一个新的管理员用户:
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;
创建特定于应用程序的帐户(例如 WordPress):
CREATE USER 'wp'@'localhost' IDENTIFIED BY 'SuperSecretPassword!123'; GRANT ALL ON `wp`.* TO 'wp'@'localhost';
对每个应用程序执行此操作,确保它们不能访问彼此的数据库。
刷新权限以确保一切都已设置:
FLUSH PRIVILEGES;
希望这可以帮助