vlambda博客
学习文章列表

wsl安装mysql初始化数据库并设置服务自启

既然将wsl作为虚拟环境来使用,那我们就离不开数据库,刚好今天想部署一个项目,就先装一个mysql,结果在安装过程中遇到很多问题,这里也记录一下。


安装【以Ubuntu为例】

mysql的安装还是比较简单的,我们可直接执行以下命令等待完成即可。

apt-get update;apt-get install mysql-server;

这一步一般都没问题,但是,安装过程中并没有提供修改root密码的操作,这就导致数据库安装完成后,我们没办法登录~~~,那么该如何修改root的密码呢?

启动mysql服务#check the status of mysqlservice mysql status;
#start mysqlservice mysql start;
#stop mysqlservice mysql stop;
#restart msyqlservice mysql restart;


修改root密码

mysql在安装的过程中,提供了一个默认的登录用户与密码,我们可以在路径/etc/mysql/debian.cnf文件内查看,如图

我们通过[mysql_upgrade]节下的user和password登录即可

mysql -udebian-sys-maint -phXqminSvRPXfSRgd

登录成功后,我们可以切换到mysql对root的密码进行修改,具体操作如下:

# switch databasemysql>use msyql;
#update root's passwordmysql>alter user 'root'@'localhost' identified with mysql_native_password by 'root';
#write privilegesmysql>flush privileges;

之后即可quit/exit退出。

这里要注意,最好重启一下mysql服务,以使配置生效。

然后通过root登录

mysql -uroot -proot

mysql环境搭建好了,那该如何部署我们的数据库呢?


数据库创建与初始化

mysql有一些列的创建、查询、新增、删除等的命令。

如果我们要部署一个项目,肯定会有现成的.sql文件供部署,那我们该如何操作呢?

1.首先,创建数据库名称。

mysql>create test1;mysql>use test1;

创建test1,并切换到该库。

2.初始化表结构。

mysql通过source命令来加载sql文件

#source /pathmysql>source /e/demo/a.sql;

一般的,mysql数据库会将结构和数据分开导出到不同的.sql文件,我们只需先执行结构,在初始化数据即可。

3.创建完成后,即可通过命令简单验证

mysql>show tables;mysql>select * from table_A;

到这里,本篇内容基本上就结束了,还有以下几点,想在这里提一下,


其他

  • 加载.sql文件其实有2种方式,刚刚说的是登录数据库之后的操作方式,其实还有另一种,使用就看情况和个人习惯了。

#mysql -uuser -ppasswd database </pathmysql -uroot -proot </e/test/a.sql


  • mysql安装完成后,直接启动mysql,有可能报如下之类的错误。

Access denied for user ' root ' @ ' localhost '

此时不必在意,执行完service msyql restart之后,直接执行通过默认用户密码登录即可。因为此时,查看服务状态的话,有可能是stopped状态,但是确实可以登录,并进行root密码的修改,修改完成后,重新启动服务,则服务正常运行。


  • 通过Navicate或SQLyog等工具进行连接时,提示找不到服务器。

这个是因为安装MySQL时,设置了root用户只能本机登录,按如下进行修改即可。

mysql>use mysql;mysql>update user set host='%' where user='root';mysql>flush privileges;mysql>quit;


mysql开机启动

其实,上篇的ssh开机启动就没配置成功,这里一并说一下,要解决这个问题,我们不能按单独的 系统去处理,因为我们这里是wsl,应该是有所差别。 网上有很多的教程,但并不是很简单,这里提供一种简介的方式,可以自由配置。
我们知道,通过wsl -d 系统版本 -u username 要启动的服务 start/restart可以启动我们要启动的服务,

比如,我们想启动ssh则可以

wsl -d ubuntu-20.04 -u root /etc/init.d/ssh start

那随着我们的使用,我们要想开机启动的服务肯定越来越多,那我们是不是可以把他们放到一块来启动呢?毫无疑问是可以的,我们,可以在特定路径下建一个start.wsl文件,比如放在/etc/start.wsl下,我们可以编辑start.wsl内容为

service ssh restartservice mysql restart#添加想要启动的服务

然后,在启动wsl的时候,添加附加命令

wsl -d -ubuntu-20.04 -u root /etc/init.wsl

即可启动文件内的全部服务,因为我们已经指定了默认版本和默认用户,所以可以简化为

wsl /etc/init.wsl
* Restarting OpenBSD Secure Shell server sshd [ OK ] * Stopping MySQL database server mysqld [ OK ] * Starting MySQL database server mysqld

到此,我们的服务开机启动也搞定了。


后续内容将持续更新,有任何疑问或建议欢迎留言和讨论。

码字不易,还望一键三连支持一下哟。