1.源起
打算在家里的Win10上使用WSL搭建一个Nextcloud做私有云盘用,给自己挖了个小坑,Apache和php安装都比较顺利,唯独这Mysql坑了我好几天。
2.一般mysql只需要这么装
1sudo apt-get -y mysql-server
顺利的话,安装完成之后应该就可以使用下面的命令运行mysql服务了。
1sudo service mysql start
返回
1* 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的方法:
1//完全清除mysql-server
2sudo apt-get remove --purge 'mysql*'
3sudo rm -rf /etc/mysql /var/lib/mysql
4sudo apt-get autoremove
5sudo apt-get autoclean
6//重新安装mysql-server
7sudo apt-get install mysql-server
嗯,这其中 sudo rm -rf /etc/mysql /var/lib/mysql
是关键所在啊。
5.第三坑-mysql用户的home directory错误
通过上述步骤,重装好mysql之后,启动mysql提示如下:
1No directory, logging in with HOME=/
WSL的issue下有一条也提到了这个:
https://github.com/Microsoft/WSL/issues/2113
misterjaytee给出方法:
1//修改mysql用户的目录
2sudo usermod -d /var/lib/mysql/ mysql
6.教训和总结
至此,爬了3次坑之后,在WSL上运行了Mysql,我可以安心的上我的Nextcloud了。
整个过程看下来,其实我在第二个坑的时候,就不应该草率的写cnf文件。嗯,根本上还是对技术不过关啊。
哦,对了,不要在WSL上通过编译的方式安装mysql,信我,在编译的过程中坑更多,而且,从issues中查看的结果,貌似WSL目前根本上并不能完成mysql的编译。