后端开发记录——服务器上部署MySQL,本地远程连接

昨天,在服务器上下载了一个MySQL,新建了允许远程登录的用户和允许其操作的一个数据库,库里也建立了和后端Mapper对应的数据结构,但是结果发现实际上访问不到。最后找了1个多小时的错,发现是服务器的IP写错了ᵕ᷄≀ ̠ᵕ᷅ 。

下面记录一下如何在Ubuntu服务器上下载MySQL

一、在服务器/#:根目录下

执行sudo apt-get update

这个命令是为了更新一下apt,我看有些地方用的命令是sudo apt update,反正能更新即可。

二、下载

然后就是直接下载。同样在根目录下执行

sudo apt-get install mysql-server

这里多说一下,为什么要在根目录下呢?因为我就在根目录下执行的没问题。那别的目录行不行呢?我也不清楚,反正根目录下是可以的。
这一个命令就是下载MySQL。

至于会下载到哪里,就是默认的几个路径,其实也不用管,之后需要用到相关文件,网上一查就知道在哪里了。

下载完成之后,我的MySQL就自动开了。可以运行下面命令查看MySQL是否开了。

sudo apt-get install mysql-server

如果看到active(running),就说明打开了。如果没打开,可以运行下面的命令

sudo service mysql start

三、新建用户

首先需要说一下,当我们第二步下载完成MySQL之后,运行(这步就是为了看一下而已,不运行也行)

sudo mysql

是可以直接打开mysql控制台的,无需密码,默认直接进入root用户(而且这个root用户默认也是只能从本地进入,也就是只能从当前这个服务器登录进去)。

下面的命令可以查看当前有哪些用户(当然你不看也行)

SELECT user,authentication_string,plugin,host FROM mysql.user;

但是我们不能让别人直接远程登录root用户,随意操作整个数据库。

所以,我们一般会新建一个用户,来赋给这个用户一些权限。

下面命令会新建一个用户

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

注意这个命令千万不要直接复制过去用,这只是个模板。

username是用户名字,password是密码,localhost代表这个只能只能本地登录,如果把loaclhost写成%就代表可以远程用这个用户登录。

比如,我想要新建一个用户名字叫user1,密码是123,只能从本地登录,那么就用

CREATE USER 'user1'@'localhost' IDENTIFIED BY '123';

再举个例子,新建一个用户名字叫user2,密码是4456,允许远程登陆。

CREATE USER 'user2'@'%' IDENTIFIED BY '4456‘;

注意单引号不要丢。

最后,可以使用这个命令查看新建的用户

SELECT user,authentication_string,plugin,host FROM mysql.user;

四、授权

我们新建了一个用户,但是这个用户目前没有任何的权限。

我们需要给他授权,在此仅是简单的授权,说白了就是只允许这个用户操作某一个数据库,给他操作这个数据库的所有权限,不再细分只允许读不允许写这种的。

假设你已经有了数据库,叫做DB1(这里就不赘述如何建数据库,如何建表等)

GRANT ALL PRIVILEGES ON DB1.* TO 'user1'@'%';

这个命令的意思是授权DB1数据库的所有操作给用户user1,这个用户是允许远程登录的。(用的是%)

五、修改MySQL配置文件

我们只是新建并授权了一个用户,但是MySQL这个整体的大的一个服务还没有进行配置。说白了就是你现在可能都找不到这个服务,也就是这个进程,或者这个进程不允许你访问。

也就是说,这一步的操作是进程服务层面的,是能不能找到MySQL服务的问题。之前的是找到数据库之后内部授权的问题。

我的配置文件路径如下,运行下面命令

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

用vim(类似Windows的记事本)打开这个文件。

如果你的文件不在这个路径可以去网上搜一下在哪。或者查找文件名mysqld.cnf。

进入这个文件之后,把

bind-address     = 127.0.0.1

修改为

bind-address     = 0.0.0.0

有些地方说注释掉就行,应该也行。但是这样更保险一点。这样设置的意思是监听所有的IP来源。

然后同样实在这个文件中,建议把port也打开。

添加,或者去掉注释

port     = 3306

总之就是这个配置文件里面要有这么一行,意思就是这个服务运行在3306端口。当然如果不配置理论上默认也是3306,配置了还是更保险吧。如果你想修改MySQL服务的运行端口,就可以在这里改。

这里多说一下,一定要记得把你的服务器安全组也就是防火墙的3306端口(就是上面的port)打开,要不然在服务器层面就不允许访问这个端口。

六、重启MySQL服务

同样是在服务器的根目录下,运行下面的命令重启MySQL

sudo service mysql restart

这样服务器的部分就配置完成了。

七、本地远程连接

其实这部分要看你的后端的框架了,我用的是Spring Cloud中的MyBatis。

直接在当前项目的application.properties文件下,添加

spring.datasource.url=jdbc:mysql://服务器IP:3306/你的数据库?allowPublicKeyRetrieval=true&useSSL=false
spring.datasource.username=你在服务器新建的用户名
spring.datasource.password=密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5

当然pom中的依赖就不多说了,可以自行上网去搜(这块就看个人的后端代码了)

最后多说一点吧,上面的allowPublicKeyRetrieval=true&useSSL=false是因为我本地的密码认证方式和服务器上的不太一样所以加的设置,可以根据个人的情况看需不需要加。

八、最后

最后,在上述步骤之后,我的仍未连接成功数据库,找了1个多小时的bug,结果发现spring.datasource.url=jdbc:mysql://服务器IP:3306/你的数据库?allowPublicKeyRetrieval=true&useSSL=false

就是这一行的服务器IP写错了。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值