求助,更新mariadb之后,无法启动服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助,更新mariadb之后,无法启动服务相关的知识,希望对你有一定的参考价值。

参考技术A 一:下载资源1.下载VC11vcredist_x64.exe(32位下载VC11vcredist_x86.exe),因为云服务器上只装了IIS,其他环境都没有。推荐下载英文版。2.下载Apachehttpd-2.4.9-win64-VC11.zip(32位网址相同)由于自2.2后Apache官网不再更新win版本3.下载phpphp-5.5.10选择线程安全版本VC11x64ThreadSafe二:安装配置A.安装VC11vcredist_x64.exeB.安装配置php1.将php解压到自定义目录下,我这里选择和默认目录一样:C:/php552.将C:php55和C:php55ext加入环境变量PATH中3.将C:php55php.ini-production复制一份,并重命名为php.ini4.开启几个常用php扩展,用记事本打开C:php55php.ini修改721行将;extension_dir="ext"=>extension_dir="ext"(去掉extension前面的分号)修改873行将;extension=php_mbstring.dll=>extension=php_mbstring.dll(去掉extension前面的分号,这是php多字节字符串扩展)修改875行将;extension=php_mysql.dll=>extension=php_mysql.dll(去掉extension前面的分号)修改876行将;extension=php_mysqli.dll=>extension=php_mysqli.dll(去掉extension前面的分号)5.在cmd中输入php-v验证是否安装成功C.安装配置Apache1.将Apache解压到自定义目录下,我这里选择和默认目录一样:C:/Apache242.打开C:apache24confhttpd.conf(推荐使用Notepad++可以看到行号)说明:由于默认的IIS服务器使用80端口,因此我令Apache使用8080端口,后面会讲WindowsServer2012如何打开8080端口修改37行ServerRoot"c:/Apache24"=>ServerRoot"c:/Apache24"(这里输入的是你解压apache安装包的位置)修改58行Listen80=>Listen8080修改217行#ServerName:80=>ServerName:8080(去掉前面的#,同时设定端口号8080)修改241行DocumentRoot"c:/Apache24/htdocs"=>DocumentRoot"d:/WebSites"(这个目录即为Apache服务器的虚拟根目录,可以自己设定)修改242行=>(与241保持一致)修改262行AllowOverrideNone=>AllowOverrideAll修改267-269行RequireallgrantedOrderDeny,AllowAllowfromall修改275行DirectoryIndexindex.html=>DirectoryIndexindex.htmlindex.phpindex.htm(我们添加了index.phpindex.htm)修改358行ScriptAlias/cgi-bin/"c:/Apache24/cgi-bin/"=>ScriptAlias/cgi-bin/"c:/Apache24/cgi-bin/"(依然一样不用改)修改374行=>(依然一样不用改)在C:Apache24confhttpd.conf最后一行添加LoadModulephp5_module"c:/php55/php5apache2_4.dll"(这里与你下载的包有关)AddTypeapplication/x-httpd-php.php.html.htm(注意.php.html.htm之间的空格)PHPIniDir"c:/php55"(与自己的php安装目录一致)3.安装打开cmd,注意WindowsServer2012中的PowerShell与cmd还是有区别的,快捷键win+X选择打开cmd进入c:Apache24bin(你的Apache安装目录)执行httpd-kinstall(用PowerShell无法执行这个命令)4.进入c:Apache24bin(你的Apache安装目录)双击运行ApacheMonitor.exe不出意外,这时右下角已经有Apache的图标了,在自己的服务器云主机上从浏览器访问localhost:8080以及IP:8080都可以发现成功了。可能错误分析:1.右下角Apache面板显示noservicesinstalled。说明Apache没有安装成功。2.服务器上键入localhost:8080以及ip:8080无法显示。说明httpd.conf配置错误3.服务器上可以通过ip:8080访问外网不能访问。说明8080端口没有开放。你可以在cmd里面利用netstat-ano查看端口开启情况。但是通过外网来访问服务器IP:8080去发现无法连接。这是因为默认的8080端口没有打开。步骤如下:阿里云WindowsServer2012打开8080端口方法:1、进入控制面板选择防火墙,选择高级设置2.左侧选择入站规则,右侧点击新建规则3.选择端口4.选择TCP下面特定端口填写80805.允许连接6.7.完成这时通过外网就可以以IP:8080方式访问Apache服务器了。

MariaDB 更新后无法启动:[警告] 无法创建测试文件 /home/mysql/beta.lower-test

【中文标题】MariaDB 更新后无法启动:[警告] 无法创建测试文件 /home/mysql/beta.lower-test【英文标题】:MariaDB cannot start after update: [Warning] Can't create test file /home/mysql/beta.lower-test 【发布时间】:2016-11-26 12:29:13 【问题描述】:

我刚刚使用 apt-get dist-upgrade 更新了 MariaDB。现在它不会再开始使用service mysql start了。

但是,我可以以 root 身份运行它或执行以下操作:sudo -u mysql mysqld_safe 然后 MariaDB 启动正常。文件夹 /home/mysql 归 mysql 用户和组所有。

我发现这个函数会抛出错误: https://github.com/MariaDB/server/blob/7ff44b1a832b005264994cbdfc52f93f69b92cdc/sql/mysqld.cc#L9865

我不知道下一步该做什么。有什么指点吗?

【问题讨论】:

只需将您的数据库系统恢复到以前的版本...或备份您的数据库(mysqldump),删除 MariaDB 的每一条痕迹,然后从头开始安装最新版本 :) 是的,真的不想那样做。一定是更简单的方法。 @BentodeGier,你解决问题了吗?更新后我刚刚收到此错误 检查这个答案:***.com/a/69450228/3881354 并按照所有提到的步骤,但在 Ubunto 你应该使用 AppArmor 而不是 SELinux 【参考方案1】:

要从 /home 运行 MariaDB SQL,在文件 /usr/lib/systemd/system/mariadb.service/lib/systemd/system/mariadb.service 中,只需更改:

ProtectHome=true

到:

ProtectHome=false

【讨论】:

在 ubuntu 17.04 中该文件似乎已移至此处 /lib/systemd/system/ 这似乎被重置了几次。有什么办法可以防止这种情况发生吗? 对于 debian 9,该文件位于 /etc/systemd/system/multi-user.target.wants/mariadb.service。然后在启动服务之前必须运行“systemctl daemon-reload” 这显然不再起作用了。 Mariadb 今天早上刚刚更新,它完全忽略了 ProtectHome=false。【参考方案2】:

Thomas 的答案是正确的,但每隔几个月就会更新一次。所以这是一个永久的解决方案:

使用systemctl edit mariadb 创建一个覆盖mariadb 服务默认设置的文件。 (在 debian 中它位于 /etc/systemd/system/mariadb.service.d/override.conf

在文件中设置 Thomas 更改的相同设置:

[Service]
ProtectHome=false

使用 systemctl daemon-reload 重新加载 systemctl 配置。

【讨论】:

此答案适用于 Ubuntu 18.04,并且是 Mariadb 推荐的方法。请参阅mariadb.com/kb/en/library/systemd/… 对于其他可能导致问题的内容(例如,我还缺少父目录上的执行标志),请参阅mariadb.com/kb/en/library/what-to-do-if-mariadb-doesnt-start/… 像魅力一样工作!【参考方案3】:

在 debian 9 上,您需要在 /lib/systemd/system/mariadb.service /lib/systemd/system/mariadb@.service 中将 ProtectHome 更改为 false,然后运行 ​​sudo systemctl daemon-reload。

如果仍然无法正常工作,也可以运行 sudo grep -Ri "protecthome" /lib/systemd/system 在 mysql 相关文件中查找其他 ProtectHome 实例

【讨论】:

也为 opensuse tumbleweed 工作,/usr/lib/systemd/... 还有 mariadb.service 和 mysql.service 是符号链接的,mariadb@.service 和 mysql@.service 同样。【参考方案4】:

解决方法是把 home 目录挂载为 /var/lib/mysql:

mount --bind /home/mysql/var/lib/mysql /var/lib/mysql

【讨论】:

谢谢。我使用了上面的解决方案,但这会被 updtes 永久删除。因此我希望这是长期的解决方法:我把它放在 fstab /home/share/mysqldb /var/lib/mysql none bind 0 0【参考方案5】:

Debian 8 (Jessie) 和 9 (Stretch) 更新后的情况相同。在“apt-get upgrade”命令之后

服务mysql启动

服务器启动失败并记录错误:

[警告] 无法创建测试文件 /home/johndoe/UserDatabases/mypcname.lower-test

解决方案是更改文件 /lib/systemd/system/mariadb.service 中的值:

ProtectHome=true

ProtectHome=false

如上所述。

【讨论】:

【参考方案6】:

@RedGiant 是的,我解决了。忘记在这里发帖了。

显然,在 .1 版本之后,您无法再从 /home 运行 SQL。可能有办法解决这个问题,但还没有找到。

我可以从除 /home 之外的任何位置运行 MySQL。我所做的是卸载 /home(我将我的 SSD RAID 安装到 /home)并将我的磁盘重新安装为 /ssd。更改了我在配置中的路径,它立即工作。

我没有运行 SELinux 或 Apparmor。

【讨论】:

是的,您可以使用/home。这只是一个坏主意,需要额外的配置(centos/fedora)【参考方案7】:

我遇到了与问题中提到的相同的问题。就我而言,我想将 MariaDB 数据目录移动到 /home/mysql 文件夹,但在更改 my.cnf 文件后,MariaDB 服务无法启动。

我在文件/lib/systemd/system/mariadb.service

中做了如下改动
ProtectHome=true to ProtectHome=false

它要求我在再次启动 Mariadb 服务时重新加载守护进程。但是,我已经重启了服务器并启动了 MariaDB 服务,没有任何问题。

【讨论】:

以上是关于求助,更新mariadb之后,无法启动服务的主要内容,如果未能解决你的问题,请参考以下文章

centos通过yum安装mariadb(mysql)无法启动服务或者找不到mysql.sock

CentOS通过yum安装MariaDB(MySQL)无法启动服务或者找不到mysql.sock

eclipse中tomcat无法正常启动求助

求助,本地计算机上的mysql服务启动后停止

求助,postgresql服务启动不了

各位求助,win10应用全都变成灰色都无法打开了