由于官方库里已经没有mysql 5.7了。yay源中找到的 5.7安装时无奈有何maria的一些包冲突,装不了,只能tar.gz手动解压安装了
安装流程这里不多做赘述,这里主要说下如何解决这个问题,流程就是手动解压。安装。配置好环境变量,启动,一切正常,mysql已经工作
但是关机或者重启之后,mysql有各种报错,主要是首先没有mysqld.pid文件路径,其次就是创建路径之后没有权限
如果你是用root权限管理所有mysql相关的文件和文件夹的话,这些问题可以略过
首先造成这个问题的原因是因为mysql本身的问题,放在run这种内存文件夹之内导致的,首先最简单的办法就是直接将mysql的my.cnf文件中pidFile修改为非/var/run目录下去生成
当然这么做的前提是不适用service systemctl等命令托管,每次你的是/**/mysql/support-files/mysql.server start|restart|stop 这样来处理才适用
一般使用第三方库或者网上照着别人方法一步步装的话这里一般都是run目录,只需要将这里改成其他任意非内存保存的文件目录就行
目录自己定,这个是建立在每次都跑到mysql根目录下去执行命令的情况才有用,不过一般都会直接吧mysql托管给servie,systemctl等
yum源好像安装好直接挪到别的目录去了,似乎也不会出这个问题,就说说有这个问题的吧,这里主要说下manjaro的,其他linux发行版的参考
https://blog.youkuaiyun.com/liu_yulong/article/details/106917089
原理一样,就是让启动时创建pid-file的路径不要丢在run目录里(5.7没有既把pid放在run目录下又可以解决重启系统后mysql直接启动的方案)
首先建立一个systemctl管理mysql 的文件,一般情况是在/usr/lib/systemd/system/这个目录下
直接新建mysql.service文件,内容如下
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
PIDFile=/var/run/mysqld/mysqld.pid
ExecStart=/yourMysqlPath/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false
把service下的PIDFile路径改成非run路径,我这里依旧和上面一样改成/var/lib/
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
PIDFile=/var/lib/mysqld/mysqld.pid
ExecStart=/yourMysqlPath/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false
然后保存
执行systemctl daemon-reload 重载
可以先使用systemctl status mysql测试下状态,此时若出现Permission deny或者no directory等字样直接创建,给权限就好(给到你配置的执行mysql的用户头上,上面用户就是mysql)
然后systemctl start mysql,查看日志。启动成功
然后reboot,重启系统直接,直接systemctl start mysql ,正常启动,问题解决~