升级到 debian 9 后,我在尝试执行以下操作时遇到此问题apt-get upgrade
:
Failed to start MariaDB database server
这是日志:
设置 mariadb-server-10.1 (10.1.23-9+deb9u1) ... mariadb.service 的作业失败,因为控制进程退出并显示错误代码。 有关详细信息,请参阅“systemctl status mariadb.service”和“journalctl -xe”。 invoke-rc.d:initscript mysql,“启动”操作失败。 ● mariadb.service - MariaDB 数据库服务器 已加载:已加载(/lib/systemd/system/mariadb.service;已启用;供应商预设:已启用) 活动:自 2017 年 7 月 5 日星期三 15:44:03 CEST 起失败(结果:退出代码); 9 毫秒前 进程:9713 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION(代码=已退出,状态=1/FAILURE) 进程:9623 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl 设置环境 _WSREP_START_POSITION=$VAR ||退出 1(代码=已退出,状态=0/成功) 进程:9619 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION(代码=exited,状态=0/SUCCESS) 进程:9616 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) 主PID:9713(代码=已退出,状态=1/FAILURE) 状态:“MariaDB 服务器已关闭” 七月 05 15:43:59 v22015121382329682 systemd[1]:启动 MariaDB 数据库服务器... Jul 05 15:44:00 v22015121382329682 mysqld[9713]: 2017-07-05 15:44:00 140711653892672 [注意] /usr/sbin/mysqld (mysqld 10.1.23-MariaDB-9+deb9u1) 作为进程 9713 启动。 .. 七月 05 15:44:03 v22015121382329682 systemd[1]: mariadb.service: 主进程退出,代码=退出,状态=1/FAILURE Jul 05 15:44:03 v22015121382329682 systemd[1]: 无法启动 MariaDB 数据库服务器。 七月 05 15:44:03 v22015121382329682 systemd[1]: mariadb.service: 单元进入失败状态。 七月 05 15:44:03 v22015121382329682 systemd[1]: mariadb.service: 失败,结果为“退出代码”。 dpkg:处理包 mariadb-server-10.1 时出错(--configure): 子进程安装的安装后脚本返回错误退出状态 1 dpkg:依赖性问题阻止配置default-mysql-server: default-mysql-server 依赖于 mariadb-server-10.1;然而: mariadb-server-10.1 软件包尚未配置。 dpkg:处理包default-mysql-server(--configure)时出错: 依赖性问题 - 未配置 dpkg:依赖性问题阻止配置 mysql-server: mysql-server 依赖于default-mysql-server;然而: 软件包 default-mysql-server 尚未配置。 dpkg:处理包 mysql-server 时出错(--configure): 依赖性问题 - 未配置 处理时遇到错误: mariadb-服务器-10.1 默认 mysql 服务器 mysql 服务器
我已经尝试过这个教程,但仍然失败: https://askubuntu.com/a/697806/672607
我该如何解决这个问题?
答案1
在本教程中,您应该安装 mariadb-server 来代替 mysql-server。我在 DEBIAN 9 安装上遇到了同样的问题,这些命令对我有用:
sudo apt purge 'mysql*'
sudo apt purge 'mariadb*'
sudo apt autoremove
sudo apt autoclean
检查系统中是否还有东西:
dpkg -l | grep -e mysql -e mariadb
如果列表为空,则安装 mariadb 服务器:
sudo apt install mariadb-server
现在尝试检查停止和启动数据库的状态:
安装后状态:
sudo systemctl status mysql.service
● mariadb.service - MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-03-21 16:08:49 CET; 2min 1s ago
Main PID: 15699 (mysqld)
Status: "Taking your SQL requests now..."
CGroup: /system.slice/mariadb.service
└─15699 /usr/sbin/mysqld
.../..
检查PID:
sudo more /var/run/mysqld/mysqld.pid
15699
停止数据库:
sudo systemctl stop mysql.service
sudo systemctl status mysql.service
● mariadb.service - MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2018-03-21 16:14:35 CET; 1s ago
Main PID: 15699 (code=exited, status=0/SUCCESS)
Status: "MariaDB server is down"
.../...
您也可以检查 PID 文件是否不存在
sudo more /var/run/mysqld/mysqld.pid
more: stat on /var/run/mysqld/mysqld.pid: No file or folder
启动数据库:
sudo systemctl start mysql.service
sudo systemctl status mysql.service
● mariadb.service - MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-03-21 16:14:54 CET; 3s ago
Process: 15911 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 15908 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
Process: 15791 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_S
Process: 15787 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 15784 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Main PID: 15881 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 26 (limit: 4915)
CGroup: /system.slice/mariadb.service
└─15881 /usr/sbin/mysqld
您可以检查它应该存在的 PID 文件。可能对空数据库有帮助。如果数据库中有东西,您应该先进行备份。
答案2
尝试
apt dist-upgrade
或者
apt install aptitude
aptitude install mariadb-server
aptitude 有一个非常强大的依赖解析器