Ubuntu 18.04 启动 mysql 没有 root 权限

Ubuntu 18.04 start mysql without root privilege

我刚刚安装了 ubuntu 18.04 并在上面安装了 LAMP,但是我在没有 root 权限的情况下使用 mysql 时遇到了问题。当我写:

mysql -u root -p

并输入我配置的密码,它抛出访问被拒绝。除非我写

sudo mysql -u root -p

然后输入我可以连接的密码。但我不想要 sudo,因为它阻止 workbench 连接到 mysql,这同样适用于 phpmyadmin。关于如何解决这个问题的任何提示?

我昨天也遇到了这个问题。要解决此问题,请执行以下步骤:

  1. 连接到 MySQL:sudo mysql -u root
  2. 检查数据库中的 mysql 用户:SELECT User,Host FROM mysql.user;
  3. 删除 root 用户帐户:DROP USER 'root'@'localhost';
  4. 重新创建根用户:CREATE USER 'root'@'%' IDENTIFIED BY ''
  5. 授予 root 用户所有权限:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  6. 为 root 用户设置密码:ALTER USER 'root'@'%' IDENTIFIED BY 'yourpassword';

就是这样!现在您应该可以连接 MySQL.

应该只有“-u root”用户需要sudo。无论如何,最好不要使用 root 进行大多数访问,因此只需使用 sudo 以 root 身份登录并创建一个新用户:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'localhost';

那么你应该可以在没有 sudo 的情况下访问 "mysql -u newuser"。

我在 workbench 中使用 Ubuntu 18.04 和 mysql 5.7 版,但通过以下 10 个步骤解决了这个问题

  1. 连接到 MySQL:sudo mysql -u root
  2. 检查数据库中的 mysql 个用户:SELECT User,Host FROM mysql.user;
  3. 删除 root 用户帐户:DROP USER 'root'@'localhost';
  4. SET GLOBAL validate_password_length = 5;
  5. SET GLOBAL validate_password_number_count = 0;
  6. SET GLOBAL validate_password_mixed_case_count = 0;
  7. SET GLOBAL validate_password_special_char_count = 0;
  8. SET GLOBAL validate_password_policy = LOW;
  9. 重新创建根用户:CREATE USER 'root'@'%' IDENTIFIED BY 'admin'
  10. 授予 root 用户所有权限:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

enter image description here 1.更新mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';

2.FLUSH 特权;

如果在没有 sudo 的情况下无法与任何 mysql 用户连接到 mysql,请尝试:

sudo chmod -R 755 /var/lib/mysql/

sudo chmod -R 755 /var/run/mysql/

然后重启服务

sudo services mysql start

sudo /etc/init.d/mysql start