mysql 安装卡在 Ubuntu 16.04 上(没有 root 用户权限)

use*_*667 13 server mysql 16.04

在我的 ubuntu 16.04 服务器中,我尝试通过以下命令安装 mysql

sudo apt-get install mysql-server
Run Code Online (Sandbox Code Playgroud)

每次它都卡在消息中时:

update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode 
Renaming removed key_buffer and myisam-recover options (if present) 
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.16, use --force if you still need to run mysql_upgrade
Run Code Online (Sandbox Code Playgroud)

我必须按Ctrl+z才能停止它。我已经检查了日志文件/var/log/mysql/error.log,它的最后 10 行显示了这个结果:

2017-01-18T09:07:30.329930Z 0 [Note] InnoDB: Buffer pool(s) load completed at 170118  9:07:30
2017-01-18T09:07:30.335086Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2017-01-18T09:07:30.335137Z 0 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
2017-01-18T09:07:30.335157Z 0 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
2017-01-18T09:07:30.335216Z 0 [Note] Server socket created on IP: '127.0.0.1'.
2017-01-18T09:07:30.349491Z 0 [Note] Event Scheduler: Loaded 1 event
2017-01-18T09:07:30.349749Z 0 [Note] Execution of init_file '/var/lib/mysql-files/tmp.sJ5rMac6mK' started.
2017-01-18T09:07:30.350543Z 1 [ERROR] 1396  Operation ALTER USER failed for 'root'@'localhost'
2017-01-18T09:07:30.350737Z 0 [Note] Execution of init_file '/var/lib/mysql-files/tmp.sJ5rMac6mK' ended.
2017-01-18T09:07:30.350864Z 0 [Note] mysqld: ready for connections.
Run Code Online (Sandbox Code Playgroud)

重新启动后,我通过mysql -u root. 在 mysql 中,我无法进行任何操作,无法创建新用户或修改权限。我只能浏览默认数据库

  • 信息模式
  • 测试

当我输入时,show grants它显示了以下结果

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+
Run Code Online (Sandbox Code Playgroud)

这很奇怪。为了确保这一点,我检查了其中给我的user_privileges表格information_schema

+----------------+---------------+----------------+--------------+
| GRANTEE        | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE |
+----------------+---------------+----------------+--------------+
| ''@'localhost' | def           | USAGE          | NO           |
+----------------+---------------+----------------+--------------+
Run Code Online (Sandbox Code Playgroud)

如何启用 root 访问权限来创建、更新?

小智 39

一个简单的解决方案是sudo killall mysqld在 apt-get 操作运行时。

apt 操作在此之后继续运行而没有任何错误(!)

来源:https : //bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1596815

  • 请注意,您可能需要在升级过程中多次执行此操作。 (2认同)

use*_*667 10

最后我得到了解决方法。这是我所做的

  • 卸载 mysql 使用 sudo apt purge mysql*
  • 删除/etc/mysql文件夹
  • 删除/var/lib/mysql, /var/lib/mysql-files, /var/lib/mysql-kering文件夹。
  • 重启
  • 安装 mysql 使用 sudo apt-get install mysql-server

这次mysql安装成功,没有卡住。安装时它提示我输入 root 密码,我提供了一个。安装后,我使用提供的密码以 root 登录。这次创建新用户,更新一切正常。现在,这是结果show grants

+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

虽然我仍然不知道为什么第一次它不起作用。我尝试只删除 cnf 文件,但这没有用。当我删除里面的所有 mysql 文件夹时,/var/lib它就起作用了。所以我猜/var/lib/msyql目录中有一些文件阻止创建任何新用户(甚至是 root 用户)。