我无法在 Kubuntu 20.04 上启动 MySQL 服务器。我尝试过多次安装和删除已安装的软件包。我关注了以下帖子:无法让 MYSQL8 在 Ubuntu 20.04 上运行。
继ExploitFate 的建议,我有一些改进,但是当我运行时:
sudo dpkg-reconfigure mysql-server-8.0
我有以下输出:
mysqld will log errors to /var/log/mysql/error.log
2021-05-14T20:21:24.150954Z 0 [ERROR] [MY-010946] [Server] Failed to start mysqld daemon. Check mysqld error log. Warning: Unable to start the server.
如果我尝试,sudo systemctl status mysql.service
输出是:
mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2021-05-14 22:14:18 CEST; 1h 23min ago Main PID: 47596 (code=exited, status=1/FAILURE)
Status: "Data Dictionary upgrade from MySQL 5.7 in progress"
may 14 22:14:16 hades systemd[1]: Starting MySQL Community Server... may 14 22:14:18 hades systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE may 14 22:14:18 hades systemd[1]: mysql.service: Failed with result 'exit-code'. may 14 22:14:18 hades systemd[1]: Stopped MySQL Community Server.
这是错误日志文件mysql
:
2021-05-14T21:16:55.848036Z 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.
2021-05-14T21:16:55.849055Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.25-0ubuntu0.20.04.1) starting as process 48092
2021-05-14T21:16:55.860384Z 1 [System] [MY-011012] [Server]
Starting upgrade of data directory.
2021-05-14T21:16:55.860441Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-05-14T21:16:57.255989Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-05-14T21:16:57.259487Z 1 [ERROR] [MY-010781] [Server] Found ./mysql/index_stats.frm file in mysql schema. DD will create .ibd file with same name. Please rename table and start upgrade process again.
2021-05-14T21:16:57.259883Z 1 [ERROR] [MY-010336] [Server] Found .frm file with same name as one of the Dictionary Tables.
2021-05-14T21:16:57.260611Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2021-05-14T21:16:57.261061Z 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.
2021-05-14T21:16:57.262020Z 0 [ERROR] [MY-010119] [Server] Aborting
2021-05-14T21:16:58.011540Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.25-0ubuntu0.20.04.1) (Ubuntu).
2021-05-14T21:16:58.016177Z 0 [ERROR] [MY-010065] [Server] Failed to shutdown components infrastructure.
显然mysql
存在,但我还没有完成它的配置。
我没有更多的想法,我想我陷入了僵局。有什么想法可以帮助我吗?
答案1
这是密码。
我遇到了同样的问题,昨天在 Kubuntu 20.04 和 MySQL-Server 8.0 上也解决了。
由于您已经尝试了一些方法,因此系统中存在一些错误,必须先修复这些错误。现在您必须完全卸载 MySQL 服务器。
su root
systemctl stop mysql.service
systemctl disable mysql.service
systemctl stop avahi-daemon.service
systemctl stop avahi-daemon.socket
apt autoclean
apt clean
如果已安装,也删除php和phpmyadmin。如果不是请跳过此步骤。
apt remove --purge phpmyadmin
apt remove --purge php-*
查看卸载日志,查找警告和错误消息。
dpkg:警告:删除 php7.4-cli 时,目录“/etc/php/7.4”不为空,因此不会被删除
rm -rf /etc/php/7.4
继续
apt remove --purge mysql*
dpkg --configure -a
apt autoremove
rm -rf /etc/mysql /var/opt/mssql /usr/bin/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
此命令将删除 MySQL 用户和所有相关文件,因此将完全扫描磁盘以查找 MySQL 用户数据,并且根据速度、大小和占用情况,这可能需要更长时间。卸载所有其他磁盘。
deluser --remove-all-files --force mysql
此时您将收到一条警告信息。
正在删除文件...
正在删除用户 mysql...
警告:组 mysql 不再有成员。
完成。
检查组mysql已移除。
cat /etc/passwd | grep mysql
cat /etc/group | grep mysql
應該是沒有結果的,空的。
现在重启系统
reboot
接下来重新安装 MySql-Server
su root
apt update --fix-missing && apt --fix-broken install && apt full-upgrade && apt autoremove
apt install php
apt install php-mysql
apt install mysql-server
mysql_secure_installation
使用至少包含 8 个字符的密码,其中至少一个必须是大写字母、一个小写字母、一个数字和一个特殊字符。并非所有特殊字符都允许,但如果您输入错误的字符,则不会出现错误消息,这就是问题所在。
使用以下方法:()
密码示例:H4CkM31Fy()Uc4n
密码验证警察
答案2
我给你一个截图。你可以看到,当我执行时mysql_secure_installation
我得到了一个错误,因为我无法连接到 MySQL。
如果我执行mysql -u root -p
并输入 root 密码,shell 会回答我:
输入密码:
错误 2002 (HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器 (2)
重新启动计算机后,我无法登录mysql,但我有以下状态:
javier@hades:~$ sudo systemctl status mysql.service ● mysql.service - MySQL 社区服务器 已加载:已加载(/lib/systemd/system/mysql.service;已禁用;供应商预设:启用> 活动:未活动(已停止)
然后我尝试:
javier@hades:~$ sudo systemctl start mysql.service mysql.service 作业失败,因为控制进程以错误代码退出。有关详细信息,请参阅“systemctl status mysql.service”和“journalctl -xe”。javier@hades:~$ sudo systemctl status mysql.service ● mysql.service - MySQL Community Server 已加载:已加载(/lib/systemd/system/mysql.service;已禁用;供应商预设:启用> 活动:失败(结果:退出代码)自 2021-05-15 星期六 04:33:40 CEST;16 秒前 进程:2637 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre(代码=exited,s>
5月15日 04:33:40 hades systemd1:mysql.service:计划重启作业,重启计数器> 5 月 15 日 04:33:40 hades systemd1:已停止 MySQL 社区服务器。5 月 15 日 04:33:40 hades systemd1:mysql.service:启动请求重复太快。5 月 15 日 04:33:40 hades systemd1:mysql.service:失败,结果为“退出代码”。5 月 15 日 04:33:40 hades systemd1:无法启动 MySQL 社区服务器。
我再次重启了电脑,检查 KWallet 是否正常工作。我认为它正在工作,正如您所看到的。
javier@hades:~$ systemctl status | grep kwalletd5
│ ├─1808 /usr/bin/kwalletd5 --pam-login 7 3
│ └─2554 grep --color=auto kwalletd5
我还添加了我的状态的第一行:
hades
State: running
Jobs: 0 queued
Failed: 0 units
Since: Sat 2021-05-15 12:42:38 CEST; 1h 5min ago
CGroup: /
├─413 bpfilter_umh
├─user.slice
│ └─user-1000.slice
│ ├─[email protected]
│ │ ├─pulseaudio.service
│ │ │ └─1803 /usr/bin/pulseaudio --daemonize=no --log-target=journal
│ │ ├─init.scope
│ │ │ ├─1789 /lib/systemd/systemd --user
│ │ │ └─1790 (sd-pam)
│ │ ├─obex.service
│ │ │ └─2113 /usr/lib/bluetooth/obexd
│ │ └─dbus.service
│ │ ├─1805 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfil>
│ │ ├─1903 /usr/libexec/dconf-service
│ │ ├─1926 /usr/bin/kglobalaccel5
│ │ ├─1935 /usr/lib/x86_64-linux-gnu/libexec/kactivitymanagerd
│ │ ├─2039 /usr/lib/x86_64-linux-gnu/libexec/kf5/kscreen_backend_launcher
│ │ └─2166 /usr/lib/x86_64-linux-gnu/libexec/baloorunner
│ └─session-6.scope
│ ├─1776 /usr/lib/x86_64-linux-gnu/sddm/sddm-helper --socket /tmp/sddm-auth26e7f>
│ ├─1808 /usr/bin/kwalletd5 --pam-login 7 3
│ ├─1809 /usr/bin/startplasma-x11
│ ├─1855 /usr/bin/ssh-agent /usr/bin/im-launch /usr/bin/startplasma-x11
│ ├─1876 /usr/lib/x86_64-linux-gnu/libexec/kf5/start_kdeinit --kded +kcminit_sta>
│ ├─1877 kdeinit5: Running...
│ ├─1883 /usr/lib/x86_64-linux-gnu/libexec/kf5/klauncher --fd=9
│ ├─1886 kded5
我已卸载 KWalletManager 并重新安装。我向您提供我的 systemctl 状态的前几行。
javier@hades:~$ systemctl status
● hades
State: degraded
Jobs: 0 queued
Failed: 1 units
Since: Sat 2021-05-15 12:42:38 CEST; 1h 34min ago
CGroup: /
├─413 bpfilter_umh
├─user.slice
│ └─user-1000.slice
│ ├─[email protected]
│ │ ├─pulseaudio.service
│ │ │ └─1803 /usr/bin/pulseaudio --daemonize=no --log-target=journal
│ │ ├─init.scope
│ │ │ ├─1789 /lib/systemd/systemd --user
│ │ │ └─1790 (sd-pam)
│ │ ├─obex.service
│ │ │ └─2113 /usr/lib/bluetooth/obexd
│ │ └─dbus.service
│ │ ├─1805 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfil>
│ │ ├─1903 /usr/libexec/dconf-service
│ │ ├─1926 /usr/bin/kglobalaccel5
│ │ ├─1935 /usr/lib/x86_64-linux-gnu/libexec/kactivitymanagerd
│ │ ├─2039 /usr/lib/x86_64-linux-gnu/libexec/kf5/kscreen_backend_launcher
│ │ └─2166 /usr/lib/x86_64-linux-gnu/libexec/baloorunner
│ └─session-6.scope
│ ├─1776 /usr/lib/x86_64-linux-gnu/sddm/sddm-helper --socket /tmp/sddm-auth26e7f>
│ ├─1808 /usr/bin/kwalletd5 --pam-login 7 3
│ ├─1809 /usr/bin/startplasma-x11
│ ├─1855 /usr/bin/ssh-agent /usr/bin/im-launch /usr/bin/startplasma-x11
│ ├─1876 /usr/lib/x86_64-linux-gnu/libexec/kf5/start_kdeinit --kded +kcminit_sta>
│ ├─1877 kdeinit5: Running...
│ ├─1883 /usr/lib/x86_64-linux-gnu/libexec/kf5/klauncher --fd=9
│ ├─1886 kded5
│ ├─1904 /usr/bin/kaccess
│ ├─1909 /usr/bin/xsettingsd
│ ├─1918 /usr/bin/plasma_session
│ ├─1933 /usr/bin/ksmserver
│ ├─1943 /usr/bin/kwin_x11 -session 10100109dae2000148598483700000013020002_1621>
│ ├─1945 /usr/bin/baloo_file
│ ├─1947 /usr/bin/plasmashell
│ ├─1949 /usr/lib/x86_64-linux-gnu/libexec/polkit-kde-authentication-agent-1
│ ├─1958 /usr/bin/xembedsniproxy
│ ├─1961 /usr/lib/x86_64-linux-gnu/libexec/kdeconnectd
│ ├─1966 /usr/bin/gmenudbusmenuproxy
│ ├─1985 /usr/lib/x86_64-linux-gnu/libexec/DiscoverNotifier
│ ├─2037 /usr/libexec/at-spi-bus-launcher --launch-immediately
│ ├─2045 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessib>
│ ├─2053 /usr/libexec/geoclue-2.0/demos/agent
│ ├─2062 /usr/lib/x86_64-linux-gnu/libexec/org_kde_powerdevil
│ ├─2133 /usr/bin/ksysguardd
│ ├─2508 file.so [kdeinit5] file local:/run/user/1000/klauncherOupbUr.1.slave-so>
│ ├─3167 /usr/bin/dolphin
│ ├─3181 file.so [kdeinit5] file local:/run/user/1000/klauncherOupbUr.1.slave-so>
│ ├─3277 /usr/bin/kate -b /home/javier/Programas/Amarok/amarok-2.9.71/amarok-2.9>
│ ├─3293 /usr/lib/firefox/firefox
│ ├─3373 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLe>
│ ├─3429 /usr/lib/firefox/firefox -contentproc -childID 2 -isForBrowser -prefsLe>
│ ├─3463 /usr/lib/firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLe>
│ ├─3513 /usr/bin/plasma-browser-integration-host /usr/lib/mozilla/native-messag>
│ ├─3567 /usr/lib/firefox/firefox -contentproc -parentBuildID 20210504152106 -pr>
│ ├─3720 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLe>
│ ├─3823 /usr/bin/konsole
│ ├─3830 /bin/bash
│ ├─3901 /usr/lib/firefox/firefox -contentproc -childID 8 -isForBrowser -prefsLe>
│ ├─4549 systemctl status
│ └─4550 pager
├─init.scope
│ └─1 /sbin/init splash
答案3
通过 MySQL-Server 中的 CLI 重置 root 密码
修复与 root 密码相关的错误消息。
打开 CLI 并以 root 身份登录。
su root
现在应该可以通过 CLI 无需密码登录 MySQL。
mysql -u root
输入此语法
SELECT user,host,plugin FROM mysql.user WHERE user='root';
+------+-----------+-----------------------+ | User | Host | plugin | +------+-----------+-----------------------+ | root | % | auth_socket | +------+-----------+-----------------------+
结果应该看起来像这样。
如果根有通配符%权限,将其更改为本地主机. 如果 root 是本地主机, 跳过此步骤。
UPDATE mysql.user SET Host='localhost' WHERE User='root' AND Host='%';
将 root 的插件更改为缓存_sha2_密码
UPDATE mysql.user SET Plugin='caching_sha2_password' WHERE User='root' AND Host='localhost';
现在刷新设置。
FLUSH PRIVILEGES;
最后看起来应该是这样的。
SELECT user,host,plugin FROM mysql.user WHERE user='root';
+------+-----------+-----------------------+ | User | Host | plugin | +------+-----------+-----------------------+ | root | localhost | caching_sha2_password | +------+-----------+-----------------------+
最后重新启动 MySQL 服务器。
systemctl stop mysql.service
systemctl disable mysql.service
systemctl enable mysql.service
systemctl start mysql.service
有时它不起作用,您必须重新启动计算机。
检查钱包管理器工作正常。
systemctl status
State: degraded Jobs: 0 queued Failed: 3 units Since: Fri 2021-05-14 16:48:54 CEST; 19h ago CGroup: / ├─user.slice │ └─user-1000.slice │ ├─[email protected] … │ │ ├─pulseaudio.service │ │ │ └─994 /usr/bin/pulseaudio --daemonize=no --log-target=journal │ │ ├─init.scope │ │ │ ├─988 /lib/systemd/systemd --user │ │ │ └─989 (sd-pam) │ │ ├─obex.service │ │ │ └─1337 /usr/lib/bluetooth/obexd │ │ └─dbus.service │ │ ├─1011 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --sys> │ │ ├─1109 /usr/bin/kglobalaccel5 │ │ ├─1114 /usr/libexec/dconf-service │ │ ├─1163 /usr/lib/x86_64-linux-gnu/libexec/kactivitymanagerd │ │ ├─1210 /usr/lib/x86_64-linux-gnu/libexec/kf5/kscreen_backend_launcher │ │ ├─1431 /usr/bin/krunner │ │ ├─1452 /usr/lib/x86_64-linux-gnu/libexec/baloorunner │ │ └─1560 /usr/bin/kwalletd5
systemctl status | grep kwalletd5
│ │ └─1560 /usr/bin/kwalletd5 │ └─24924 grep --color=auto kwalletd5