我查看了在 AskUbuntu 或外部能找到的所有类似的帖子,但没有找到任何可以解决我的问题的帖子。我只是想在我的服务器上安装 mysql,但似乎无法让它工作。
到目前为止我已经尝试过:
- 删除所有 mysql 包,,,
/var/lib/mysql
清理/etc/mysql
apt 缓存并重新安装(多次) apparmor
运行安装之前禁用服务- 正在运行
mysqld --initialize
(无效果)
这是尝试启动安装时的输出:
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 错误日志包含以下内容:
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).
mysqld服务状态如下:
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.
journalctl -xe
在 mysql 尝试启动时包含以下输出:
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'
答案1
根本原因是软件包libpam-tmpdir
(由https://github.com/konstruktoid/hardening/blob/master/scripts/17_packages)
此包改变所创建的文件或文件夹的格式mktemp
。
和libpam-tmpdir:
root@test-ub-64:~# mktemp
/tmp/user/0/tmp.qqRG7A24WV
没有libpam-tmpdir:
root@test-ub-64:~# mktemp
/tmp/tmp.HIUu5D514X
使用的格式libpam-tmpdir打破剧本/var/lib/dpkg/info/mysql-server-8.0.postinst
。
简单的方法是:
- 删除包
- 退出你的shell
- 创建新的 root shell
- 检查
mktemp
该文件是否类似于 /tmp/tmp.XXXXXXXXXX
答案2
这实际上不是对您的问题的回答,但在升级我的 Ubuntu 服务器(18.04 -> 20.04)后,我的 mysql-server 也遇到了类似的问题。
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
和
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 中注释了以下几行:
query_cache_limit = 1M
query_cache_size = 16M
并重新安装 mysql-server
sudo apt install mysql-server
我希望这篇文章能有所帮助
马丁
答案3
我花了很多时间在谷歌上搜索,浪费了很多时间,最终我得到了以下步骤,这些步骤对我有用
user@host:~$ mysql --version
导致
mysql Ver 8.0.22-0 ubuntu0.20.04.3 适用于 x86_64 上的 Linux ((Ubuntu))
首先停止所有 mysql 实例
sudo systemctl stop mysql.service
您还可以通过以下方式验证
ps ax | grep mysql
如果没有 mysql 进程/服务正在运行,则完全删除 mysql
sudo apt remove --purge mysql*
我也有强迫症,总是运行太多更新命令
sudo updatedb
然后重新启动(不确定是否有必要,但我还是这样做了)这是关键的区别....
sudo apt install mysql-server-core-8.0 mysql-server-8.0
瞧瞧——它真的有效了!
然后重新验证这一点,并确保它不是我在使用自己的机器时所做的更改,我快速启动了一个 GCP VPS,全新安装了 20.04LTS、NGINX,然后运行上述 MYSQL 安装命令——WayHay 验证通过!
这个故事的寓意是不要简单地安装“mysql-server”- 这通用版本在 20.04LTS 上失败。
现在我们有一个正在运行的 mysql,但无法访问 root
然后从这个链接(感谢@Partha Sen)https://stackoverflow.com/users/7056704/partha-sen)!!
安全模式和重置mysql root密码的方法如下
sudo systemctl stop mysql.service
为了确保没有 mysql 进程正在运行,我检查了
ps ax | grep mysql
如果它们全部停止
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’不存在。”
然后你需要添加以下附加步骤
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld
现在从你的 ssh 会话到同一台服务器的 linux 提示符 user@host:~$mysql 我得到了一个 sql 提示符 mysql>
然后在 mysql>提示符下 FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'n3w_p4$$w0rd';
将上面的“n3w_p4$$w0rd”修改为你选择的一个
然后
mysql>quit;
将带你回到Linux提示符
返回第一个 ssh 会话(带有 --skip grant tables 会话)并按 ctrl+c 终止“mysql --skip-grant-tables”会话
然后你需要以正常模式(不跳过授权表)重新启动 mysql,如下所示
sudo systemctl restart mysql.service
此时我再次重启了整个服务器
全部解决。
答案4
我在将 mySQL 5.7 升级到 8.0 后修复了这个问题
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
mkdir -p /var/log/mysql/
chown mysql:mysql /var/log/mysql/
/etc/init.d/mysql restart