1.源起

打算在家里的Win10上使用WSL搭建一个Nextcloud做私有云盘用,给自己挖了个小坑,Apache和php安装都比较顺利,唯独这Mysql坑了我好几天。

2.一般mysql只需要这么装

sudo apt-get -y mysql-server

顺利的话,安装完成之后应该就可以使用下面的命令运行mysql服务了。

sudo service mysql start

返回

* Starting MySQL database server mysqld [ OK ]

3.第一坑-莫名缺少mysql.cnf

WSL全新安装之后,直接sudo apt-get -y mysql-server并没有成功,而是在接近安装完成的时候给出了一个错误,没有截图,意思应该是/etc/mysql文件夹下缺少mysql.cnf文件,所以没法通过mysql.cnf文件生成my.cnf 文件。于是我手动创建了个mysql.cnf文件,这次倒是成功完成了安装过程,但由于我自作主张的在配置文件中写入了basedir 是/usr/local/mysql(自己给自己挖坑,为什么不考虑一下mysql的版本号就瞎写,mysql5.5之后的默认安装路径/usr/share/mysql,而5.5之前的版本是/usr/local/mysql),就因为这个basedir乱写,引起了第二个错误。

在这里列一下mysql的目录吧,记个笔记,给自己提个醒。

1.数据库目录 /var/lib/mysql/ 2.配置文件 /usr/share/mysql(mysql.server命令及配置文件)mysql5.5之后的默认安装路径,mysql5.5之前的是/usr/local/mysql 3.相关命令 /usr/bin(mysqladmin mysqldump等命令) 4.启动脚本 /etc/rc.d/init.d/(启动脚本文件mysql的目录) 5.修改登录密码 MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。

4.第二坑-路径错误

安装完成之后启动服务提示路径错误,这个不多说了,上面写了原因了。但我一开始就比较纠结,为什么空白的WSL直接安装会提示缺少cnf文件,不应该啊。

这时候我在github上也看了一些WSL的issue,打算重新安装一下mysql-server,于是看到这条:

https://github.com/Microsoft/WSL/issues/1332

其中valeryan给出了完全清除mysql-server的方法:

//完全清除mysql-server
sudo apt-get remove --purge 'mysql*'
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean
//重新安装mysql-server
sudo apt-get install mysql-server

嗯,这其中 sudo rm -rf /etc/mysql /var/lib/mysql 是关键所在啊。

5.第三坑-mysql用户的home directory错误

通过上述步骤,重装好mysql之后,启动mysql提示如下:

No directory, logging in with HOME=/

WSL的issue下有一条也提到了这个:

https://github.com/Microsoft/WSL/issues/2113

misterjaytee给出方法:

//修改mysql用户的目录
sudo usermod -d /var/lib/mysql/ mysql

6.教训和总结

至此,爬了3次坑之后,在WSL上运行了Mysql,我可以安心的上我的Nextcloud了。

整个过程看下来,其实我在第二个坑的时候,就不应该草率的写cnf文件。嗯,根本上还是对技术不过关啊。

哦,对了,不要在WSL上通过编译的方式安装mysql,信我,在编译的过程中坑更多,而且,从issues中查看的结果,貌似WSL目前根本上并不能完成mysql的编译。