阿里云服务器搭建(二)--mysql配置+部署web项目
阿里云服务器搭建(一)java环境配置+tomcat配置
阿里云服务器搭建(二)--mysql配置+部署web项目
四、linux下配置mysql
1、安装mysql
安装方式有两种,一种可以使用 yum 来安装 mysql。一种是到官网下载安装包后上传解压安装。
这里我使用的是yum来安装的
首先检查一下本机上面是否安装有mysql(我的并没有安装过mysql):rm -qa | grep mysql

PS:如果安装了, 普通删除模式 rpm -e mysql
查看有没有安装mariadb,都没有,很好,开始安装mysql,我们需要安装三个东西如图2、3、4:
①安装MySQL官方的Yum Repository
# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
②下载rpm包
# yum -y install mysql57-community-release-el7-10.noarch.rpm
③安装MySQL服务
# yum -y install mysql-community-server



启动mysql服务(注意:是mysqld哦),但是我这里报错了:
# systemctl start mysqld.service

从图5的信息上看,我们可以输入命令systemctl status mysqld.service或者 journalctl -xe查看错误信息。
图6为输入命令 journalctl -xe 看到的信息。从报错信息可以看出来,是配置目录里面有东西。

需要进入到配置文件里面,查看数据目录是什么
# vi /etc/my.cnf

再启动mysql,没问题了。

使用命令 # service mysqld status 或者 # service mysql status 命令来查看mysql 的启动状态
如果是 mysqld is stopped 那就说明mysql服务是停止状态,
如果是 mysqld is running 那就说明mysql服务是启动状态

2、设置 mysql 开机自启
为什么要设置呢?因为每次关机重启后,mysql 服务都会被停止,处于 stop 状态,这时要使用 mysql,就得执行 service mysqld start 命令,比较繁琐,所以设置一下开机自启,可以减少麻烦。
# systemctl enable mysqld
# systemctl daemon-reload 刚刚配置的服务需要让systemctl能识别,就必须刷新配置

3、设置mysql密码
执行以下命令,查找到初始临时密码后,登陆mysql:
#grep 'temporary password' /var/log/mysqld.log

注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误,如下图12:

通过msyql环境变量可以查看密码策略的相关信息:
mysql> show variables like '%password%';

validate_password_policy:密码策略,默认为MEDIUM策略
validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个
validate_password_special_char_count:特殊字符至少1个
上述参数是默认策略MEDIUM的密码检查规则。
共有以下几种密码策略:

修改密码策略
在/etc/my.cnf文件添加validate_password_policy配置,指定密码策略
validate_password_policy=0

如果不需要密码策略,在my.cnf文件中添加如下配置禁用即可:
validate_password = off
重新启动mysql服务使配置生效:
systemctl restart mysqld
找到临时密码后,登陆,然后设置新的密码:
登陆mysql:mysql -u用户名(一般为root) -p临时密码【比如我的就是:mysql -uroot -pjCjIdBpqB3+A】
注意-p后面紧接着密码
然后在修改密码:alter user root@localhost identified by '你要修改成的密码';

4、删除
至此设置完成,但还有一点小问题,因为安装了Yum Repository,以后每次操作yum都会自动更新需要卸载它。

5、配置远程登录:
MySQL默认root用户只能本地登录,如果要远程连接,要简单设置下,这里直接用root来远程登录不添加其他角色。
# GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '4008' WITH GRANT OPTION;
库名:要远程访问的数据库名称,所有的数据库使用“*”
表名:要远程访问的数据库下的表的名称,所有的表使用“*”
用户名:要赋给远程访问权限的用户名称
IP地址:可以远程访问的电脑的IP地址,所有的地址使用“%”
密码:要赋给远程访问权限的用户对应使用的密码

冲刷权限
# flush privileges;

注意:(这一段我没有用到,看看就好q^q)
需要注意mysql的配置文件中的bindaddress 的参数和skip-networking 配置
bindaddress : 设定哪些ip地址被配置,使得mysql服务器只回应哪些ip地址的请求),最好注释掉该参数或设置成为127.0.0.1以外的值
skip-networking : 如果设置了该参数项,将导致所有TCP/IP端口没有被监听,也就是说出了本机,其他客户端都无法用网络连接到本mysql服务器,所以应该注释掉该参数

这时使用navicat连接,依然失败。因为我们需要在服务器端添加3306端口

6、添加3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent;
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效

结果说没有运行防火墙,在之前的安装tomcat的时候,我将防火墙打开了,现在需要关闭防火墙了。并且之前配置tomcat时打开的端口,需要再次设置。
首先,将防火墙打开:
# systemctl status firewalld 查看防火墙状态
# systemctl start firewalld 打开防火墙

然后再输入那个开放3306端口的命令就行了
再重启防火墙
firewall-cmd --reload 重启防火墙

查看端口监听状态:netstat -an|grep 3306

如果显示不是如上图所示,则需要修改配置文件。找到my.cnf,一般在/etc/mysql/下面,具体情况根据实际而定。注释掉其中的bind-address属性。如下

7、MySQL设置utf8:
打开/etc/my.cnf也就是数据库的配置文件,然后在底部复制粘贴:
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'

查看:

PS:采用navicat新建数据库时,需要将编码方式设置为,字符集:utf8 -- UTF-8 Unicode ,排序规则:utf8_general_ci
如果在运行sql语句时,出现以下问题:
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
原因:
MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”)。
解决办法:
打开: /etc/my.cnf
滚动到文件底部复制并粘贴
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
也可以:
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
到文件的底部
保存并退出输入模式

重启MySQL:systemctl restart mysqld.service
8、开启阿里云安全组端口策略
登陆阿里云,进入控制台,网络和安全->安全组->配置规则(和之前的步骤一样)将MySQL监听端口开放即可,如下:

再用navicat连接就可以了

配置文件的说明:
/etc/my.cnf 这是mysql的主配置文件
/var/lib/mysql mysql数据库的数据库文件存放位置
/var/log mysql数据库的日志输出存放位置
五、部署项目
1、导出导入数据
由于是新服务器,上面没有数据,作为一个web项目,肯定是有数据库的使用的。所以第一步是将本地数据导入。
在本地的windows系统下,按键“win”+r 进入cmd命令,切换到mysql安装目录下,我的mysql路径为:C:\Program Files\MySQL\MySQL Server 5.7\bin
导出数据库:mysqldump -u [用户名] -p [要导出的数据库]>[导出的路径//[文件名].txt]
如我输入的命令行:mysqldump -u root -p jyb > jyb.txt (输入后会让你输入进入MySQL的密码)


然后使用xftp将文件上传至服务器

在xshell中,登陆mysql,创建数据库:create database jyb;
直接使用source [所在的路径//*.txt] 将文件进行导入

查看数据库:show databases;

2、打war包
我用的是idea。

将打好的war包上传至服务器tomcat的webapps下:

至此,就可以使用啦。