首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql不会在Ubuntu 20.04上安装

Mysql不会在Ubuntu 20.04上安装
EN

Ask Ubuntu用户
提问于 2020-06-14 13:32:58
回答 5查看 7.7K关注 0票数 0

我查看了所有类似的帖子,我可以在AskUbuntu或外部找到,但找不到任何解决我的问题。我只是试图在我的服务器上安装mysql,但似乎无法工作。

到目前为止,我已经尝试过:

  • 删除所有mysql包、/var/lib/mysql/etc/mysql、清理apt缓存和重新安装(多次)
  • 在运行安装前禁用apparmor服务
  • 运行mysqld --initialize (无效果)

以下是试图启动安装时的输出:

代码语言:javascript
复制
ubuntu@central-2:/etc$ sudo apt install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libevent-core-2.1-7 libmecab2 libnuma1 mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server-8.0 mysql-server-core-8.0
Suggested packages:
  tinyca
Recommended packages:
  libhtml-template-perl mecab-ipadic-utf8
The following NEW packages will be installed:
  libevent-core-2.1-7 libmecab2 libnuma1 mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0
0 upgraded, 9 newly installed, 0 to remove and 8 not upgraded.
Need to get 0 B/23.0 MB of archives.
After this operation, 190 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Preconfiguring packages ...
Selecting previously unselected package mysql-common.
(Reading database ... 96065 files and directories currently installed.)
Preparing to unpack .../0-mysql-common_5.8+1.0.5ubuntu2_all.deb ...
Unpacking mysql-common (5.8+1.0.5ubuntu2) ...
Selecting previously unselected package mysql-client-core-8.0.
Preparing to unpack .../1-mysql-client-core-8.0_8.0.20-0ubuntu0.20.04.1_amd64.deb ...
Unpacking mysql-client-core-8.0 (8.0.20-0ubuntu0.20.04.1) ...
Selecting previously unselected package mysql-client-8.0.
Preparing to unpack .../2-mysql-client-8.0_8.0.20-0ubuntu0.20.04.1_amd64.deb ...
Unpacking mysql-client-8.0 (8.0.20-0ubuntu0.20.04.1) ...
Selecting previously unselected package libevent-core-2.1-7:amd64.
Preparing to unpack .../3-libevent-core-2.1-7_2.1.11-stable-1_amd64.deb ...
Unpacking libevent-core-2.1-7:amd64 (2.1.11-stable-1) ...
Selecting previously unselected package libmecab2:amd64.
Preparing to unpack .../4-libmecab2_0.996-10build1_amd64.deb ...
Unpacking libmecab2:amd64 (0.996-10build1) ...
Selecting previously unselected package libnuma1:amd64.
Preparing to unpack .../5-libnuma1_2.0.12-1_amd64.deb ...
Unpacking libnuma1:amd64 (2.0.12-1) ...
Selecting previously unselected package mysql-server-core-8.0.
Preparing to unpack .../6-mysql-server-core-8.0_8.0.20-0ubuntu0.20.04.1_amd64.deb ...
Unpacking mysql-server-core-8.0 (8.0.20-0ubuntu0.20.04.1) ...
Setting up mysql-common (5.8+1.0.5ubuntu2) ...
update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Selecting previously unselected package mysql-server-8.0.
(Reading database ... 96281 files and directories currently installed.)
Preparing to unpack .../mysql-server-8.0_8.0.20-0ubuntu0.20.04.1_amd64.deb ...
Unpacking mysql-server-8.0 (8.0.20-0ubuntu0.20.04.1) ...
Selecting previously unselected package mysql-server.
Preparing to unpack .../mysql-server_8.0.20-0ubuntu0.20.04.1_all.deb ...
Unpacking mysql-server (8.0.20-0ubuntu0.20.04.1) ...
Setting up libmecab2:amd64 (0.996-10build1) ...
Setting up mysql-client-core-8.0 (8.0.20-0ubuntu0.20.04.1) ...
Setting up libevent-core-2.1-7:amd64 (2.1.11-stable-1) ...
Setting up libnuma1:amd64 (2.0.12-1) ...
Setting up mysql-client-8.0 (8.0.20-0ubuntu0.20.04.1) ...
Setting up mysql-server-core-8.0 (8.0.20-0ubuntu0.20.04.1) ...
Setting up mysql-server-8.0 (8.0.20-0ubuntu0.20.04.1) ...
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)
Specified filename /var/lib/mysql/ibdata1 does not exist.
mysqld will log errors to /var/log/mysql/error.log
2020-06-14T13:15:44.220560Z 0 [ERROR] [MY-010946] [Server] Failed to start mysqld daemon. Check mysqld error log.
Warning: Unable to start the server.
Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.
Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Sun 2020-06-14 13:15:46 UTC; 14ms ago
    Process: 38879 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)
dpkg: error processing package mysql-server-8.0 (--configure):
 installed mysql-server-8.0 package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-8.0; however:
  Package mysql-server-8.0 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
Processing triggers for systemd (245.4-4ubuntu3.1) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...
Errors were encountered while processing:
 mysql-server-8.0
 mysql-server
[ Rootkit Hunter version 1.4.6 ]
File updated: searched for 179 files, found 137
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)

mysql错误日志包含以下内容:

代码语言:javascript
复制
ubuntu@central-2:/etc$ cat /var/log/mysql/error.log
2020-06-14T13:15:43.844787Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.20-0ubuntu0.20.04.1) initializing of server in progress as process 38755
2020-06-14T13:15:43.858140Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-06-14T13:15:43.864981Z 1 [ERROR] [MY-012576] [InnoDB] Unable to create temporary file; errno: 13
2020-06-14T13:15:43.865050Z 1 [ERROR] [MY-012929] [InnoDB] InnoDB Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.
2020-06-14T13:15:43.865252Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2020-06-14T13:15:43.865309Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2020-06-14T13:15:43.865395Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-06-14T13:15:43.865816Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.20-0ubuntu0.20.04.1)  (Ubuntu).
2020-06-14T13:15:44.192647Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20-0ubuntu0.20.04.1) starting as process 38762
2020-06-14T13:15:44.220277Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory.
2020-06-14T13:15:44.220414Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2020-06-14T13:15:44.220492Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-06-14T13:15:44.227182Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.20-0ubuntu0.20.04.1)  (Ubuntu).

目前的服务状况如下:

代码语言:javascript
复制
ubuntu@central-2:/etc$ systemctl status mysql.service
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sun 2020-06-14 13:15:48 UTC; 7min ago
    Process: 39031 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)

Jun 14 13:15:48 central-2 systemd[1]: mysql.service: Scheduled restart job, restart counter is at 7.
Jun 14 13:15:48 central-2 systemd[1]: Stopped MySQL Community Server.
Jun 14 13:15:48 central-2 systemd[1]: mysql.service: Start request repeated too quickly.
Jun 14 13:15:48 central-2 systemd[1]: mysql.service: Failed with result 'exit-code'.
Jun 14 13:15:48 central-2 systemd[1]: Failed to start MySQL Community Server.

在mysql试图启动时,journalctl -xe包含以下输出:

代码语言:javascript
复制
Jun 14 13:15:45 central-2 systemd[1]: Starting MySQL Community Server...
-- Subject: A start job for unit mysql.service has begun execution
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit mysql.service has begun execution.
--
-- The job identifier is 2681.
Jun 14 13:15:46 central-2 mysql-systemd-start[38879]: MySQL system database not found in /var/lib/mysql. Please run mysqld --initialize.
Jun 14 13:15:46 central-2 systemd[1]: mysql.service: Control process exited, code=exited, status=1/FAILURE
-- Subject: Unit process exited
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- An ExecStartPre= process belonging to unit mysql.service has exited.
--
-- The process' exit code is 'exited' and its exit status is 1.
Jun 14 13:15:46 central-2 systemd[1]: mysql.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The unit mysql.service has entered the 'failed' state with result 'exit-code'.
Jun 14 13:15:46 central-2 systemd[1]: Failed to start MySQL Community Server.
-- Subject: A start job for unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit mysql.service has finished with a failure.
--
-- The job identifier is 2681 and the job result is failed.
Jun 14 13:15:46 central-2 audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=mysql comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'
Jun 14 13:15:46 central-2 audit: EXECVE argc=5 a0="systemctl" a1="status" a2="--full" a3="--no-pager" a4="mysql.service"
Jun 14 13:15:46 central-2 systemd[1]: mysql.service: Scheduled restart job, restart counter is at 1.
-- Subject: Automatic restarting of a unit has been scheduled
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Automatic restarting of the unit mysql.service has been scheduled, as the result for
-- the configured Restart= setting for the unit.
Jun 14 13:15:46 central-2 systemd[1]: Stopped MySQL Community Server.
-- Subject: A stop job for unit mysql.service has finished
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A stop job for unit mysql.service has finished.
--
-- The job identifier is 2785 and the job result is done.
Jun 14 13:15:46 central-2 audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=mysql comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Jun 14 13:15:46 central-2 audit[1]: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=mysql comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
EN

回答 5

Ask Ubuntu用户

回答已采纳

发布于 2020-06-14 14:46:32

根本原因是包libpam-tmpdir (由https://github.com/konstruktoid/hardening/blob/master/scripts/17_套餐安装)

此包更改mktemp创建的文件或文件夹的格式。

使用libpam-tmpdir

代码语言:javascript
复制
root@test-ub-64:~# mktemp
/tmp/user/0/tmp.qqRG7A24WV

不使用libpam-tmpdir

代码语言:javascript
复制
root@test-ub-64:~# mktemp
/tmp/tmp.HIUu5D514X

libpam-tmpdir使用的格式破坏了脚本/var/lib/dpkg/info/mysql-server-8.0.postinst

最简单的方法是:

  1. 若要删除包,请执行以下操作
  2. 退出你的外壳
  3. 创建一个新的根外壳
  4. 请与mktemp检查文件是否为/tmp/tmp.XXXXXXXXXXXXXXXX
票数 2
EN

Ask Ubuntu用户

发布于 2020-10-03 16:45:38

这并不能真正回答您的问题,但是升级我的Ubuntu服务器(18.04 -> 20.04)后,mysql-server也遇到了类似的问题。

代码语言:javascript
复制
2020-10-03T16:07:22.635008Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.21-0ubuntu0.20.04.4)  (Ubuntu).
2020-10-03T16:07:23.415771Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2020-10-03T16:07:23.417551Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.21-0ubuntu0.20.04.4) starting as process 2477739
2020-10-03T16:07:23.429381Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-10-03T16:07:24.553589Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-10-03T16:07:24.725172Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2020-10-03T16:07:25.048647Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-10-03T16:07:25.049185Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2020-10-03T16:07:25.057082Z 0 [ERROR] [MY-000067] [Server] unknown variable 'query_cache_limit=1M'.
2020-10-03T16:07:25.057711Z 0 [ERROR] [MY-010119] [Server] Aborting

代码语言:javascript
复制
2020-10-03T16:22:22.002048Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.21-0ubuntu0.20.04.4)  (Ubuntu).
2020-10-03T16:22:22.683274Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead.
2020-10-03T16:22:22.685313Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.21-0ubuntu0.20.04.4) starting as process 2495404
2020-10-03T16:22:22.698694Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-10-03T16:22:24.126243Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-10-03T16:22:24.323307Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2020-10-03T16:22:24.593481Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-10-03T16:22:24.593803Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2020-10-03T16:22:24.599233Z 0 [ERROR] [MY-000067] [Server] unknown variable 'query_cache_size=16M'.
2020-10-03T16:22:24.600082Z 0 [ERROR] [MY-010119] [Server] Aborting

因此,我在文件/etc/mysql/my.cnf中有如下评论:

代码语言:javascript
复制
query_cache_limit  = 1M                                                           
query_cache_size        = 16M

并重新安装mysql-server。

代码语言:javascript
复制
sudo apt install mysql-server

我希望这篇文章能有所帮助。

马丁

票数 0
EN

Ask Ubuntu用户

发布于 2021-01-24 13:01:55

许多小时的闲逛和谷歌搜索以及大量的浪费时间导致了以下步骤,这些步骤对我来说是有效的

代码语言:javascript
复制
user@host:~$ mysql --version

结果

mysql 8.0.22-0 ubuntu0.20.04.3用于x86_64上的Linux ((Ubuntu))

首先停止所有mysql实例

代码语言:javascript
复制
sudo systemctl stop mysql.service

您也可以用

代码语言:javascript
复制
ps ax | grep mysql

如果没有运行mysql进程/服务,则完全删除mysql。

代码语言:javascript
复制
sudo apt remove --purge mysql*

我也有一个运行太多update命令的OCD

代码语言:javascript
复制
sudo updatedb

然后重新启动(不确定是否有必要,但我还是这样做了)和here是关键的区别.

代码语言:javascript
复制
sudo apt install mysql-server-core-8.0 mysql-server-8.0

瞧,-这真的很管用!

然后,为了重新验证这一点,并确保它不是我在使用自己的机器时改变的东西,我迅速地编制了一个GCP,重新安装了20.04LTS,NGINX,然后运行上面的MYSQL安装命令- WayHay验证!

因此,故事的寓意是dont只需安装"mysql-server" - generic版本在20.04LTS.上失败

所以现在我们有一个mysql运行,但不能访问根目录。

然后从这个链接(谢谢@Partha ) https://stackoverflow.com/users/7056704/partha-sen)!

我跟踪了https://stackoverflow.com/questions/42153059/mysqld-safe-directory-var-run-mysqld-for-unix-socket-file-dont-exists

安全模式和重新设置mysql根密码的方法如下

代码语言:javascript
复制
sudo systemctl stop mysql.service

只是为了确保没有运行myssql进程,我检查了。

代码语言:javascript
复制
ps ax | grep mysql

如果他们都被阻止了

代码语言:javascript
复制
sudo mysqld_safe --skip-grant-tables & 

你应该得到以下的回应

2021-01-24T12:20:39.840380Z mysqld_safe日志记录到'/var/log/mysql/error.log‘。2021-01-24T12:20:39.870570Z mysqld_safe使用/var/lib/mysql数据库启动mysqld守护进程

如果是这样,那么这是个好消息--如果您没有得到好的响应,并且mysql抱怨

“UNIX套接字文件的mysqld_safe目录'/var/run/mysqld‘不存在。”

然后,您需要添加以下附加步骤

代码语言:javascript
复制
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld

现在,从ssh会话到linux提示user@host:~$mysql上的同一服务器,我得到一个sql提示符mysql>

然后在mysql>提示符下刷新权限;

代码语言:javascript
复制
ALTER USER 'root'@'localhost' IDENTIFIED BY 'n3w_p4$w0rd';

根据您的选择修改上面的"n3w_p4$$w0rd“

然后

代码语言:javascript
复制
mysql>quit;

将带您返回Linux提示。

回到第一个ssh会话(具有-跳过授予表会话)和ctrl+c,以终止"mysql -跳过-授予-授权表“会话。

然后,需要在正常模式下重新启动mysql (而不是跳过授予表),如下所示

代码语言:javascript
复制
sudo systemctl restart mysql.service

此时,我重新启动了整个服务器。

都解决了。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1250237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档