【问题标题】:Do mysql root user always come with all privileges as default?mysql root 用户是否总是默认拥有所有权限?
【发布时间】:2018-04-24 07:51:59
【问题描述】:

我正在关注this 的回答,以便在 Ubuntu 16.04 上设置我的 root 密码。 msql --version 给了我这个:

mysql  Ver 15.1 Distrib 10.0.31-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

按照答案,当我输入 UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root'; 时,我得到了这个:

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

我发现当我用相同的密码输入相同的命令时,它给了我这个:

Query OK, 0 row affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

我认为这是正确的。然后我输入最后两个命令,当我输入mysql -uroot -p 然后password 我仍然得到这个:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

我是否跳过了任何非常新手的步骤?或者有什么命令可以输出更多数据?

更新

当我输入 sudo service mysql status 时,我得到了这个:

   Active: active (running) since Sáb 2017-11-11 00:44:57 BRST; 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 4808 ExecStop=/etc/init.d/mysql stop (code=exited, status=0/SUCCESS)
  Process: 5330 ExecStart=/etc/init.d/mysql start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mysql.service
           ├─5358 /bin/bash /usr/bin/mysqld_safe
           ├─5502 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-log-error --p
           └─5503 logger -t mysqld -p daemon error

Nov 11 00:44:56 acer mysqld[5503]: 171111  0:44:56 [Note] InnoDB: 128 rollback segment(s) are active.
Nov 11 00:44:56 acer mysqld[5503]: 171111  0:44:56 [Note] InnoDB: Waiting for purge to start
Nov 11 00:44:56 acer mysqld[5503]: 171111  0:44:56 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.36-82.0 started; log sequence nu
Nov 11 00:44:56 acer mysqld[5503]: 171111  0:44:56 [Note] Plugin 'FEEDBACK' is disabled.
Nov 11 00:44:56 acer mysqld[5503]: 171111  0:44:56 [Note] Server socket created on IP: '127.0.0.1'.
Nov 11 00:44:56 acer mysqld[5503]: 171111  0:44:56 [Warning] 'user' entry 'root@localhost' has both a password and an authentication plugin spe
Nov 11 00:44:56 acer mysqld[5503]: 171111  0:44:56 [Note] /usr/sbin/mysqld: ready for connections.
Nov 11 00:44:56 acer mysqld[5503]: Version: '10.0.31-MariaDB-0ubuntu0.16.04.2'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  Ubuntu 16.04
Nov 11 00:44:57 acer mysql[5330]:    ...done.
Nov 11 00:44:57 acer systemd[1]: Started LSB: Start and stop the mysql database server daemon.

here所示,我看到我的日志应该是正常的。对吗?

更新

This answer 为我工作。但是在寻找 root 权限时,我最终选择了this question,上面写着“我的 root 用户没有所有权限”。这是一个标准吗?如果是,root 用户不应该拥有所有这些权限吗?是不是,为什么?这是一个安全的问题吗?

【问题讨论】:

  • 不要将 Ubuntu 的“root”与 MySQL 的“root”混淆。

标签: mysql ubuntu-16.04


【解决方案1】:

我的理解是,默认情况下,root@localhost 具有完全权限,而root@%(以 root 身份远程连接)没有。这是一件好事……在日常数据库使用中,您不应该使用 root 帐户。

如果您需要使用超级用户权限进行远程连接,我建议您创建一个admin 帐户,该帐户可以根据需要进行操作。 (您仍然可以远程访问并访问 root 帐户。)具体的安全规定(管理员需要什么权限)可能是一个单独的问题——可能是一个无法回答的问题,除非您可以非常具体地了解您的用例.

【讨论】:

  • 但从我的故事来看,我不能说root@localhost 我有完全的许可。如您所见,我尝试使用root@localhost,但仍然不允许登录。
  • 我不知道你做了什么改变使它工作,但设置 MySQL 通常还需要修改防火墙设置。 (如果您没有更改端口/防火墙设置,则不是这样。)
【解决方案2】:

MySQL 5.7.6 及更高版本:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Your New Password';

MySQL 5.7.5 及更早版本:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Your New Password');

【讨论】:

  • 我编辑了我的问题以指定我的新疑问。感谢您的时间和耐心。如果您知道新问题,请随时编辑您的答案
猜你喜欢
  • 1970-01-01
  • 2011-01-28
  • 2020-10-08
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2019-06-26
相关资源
最近更新 更多