1. 安装Mysql
1.1.确保服务器系统处于最新状态
[root@localhost ~]# yum -y update
如果显示内容中含有[root@localhost ~]# Complete!
说明更新完成
1.2.下载MySql安装包
root@localhost ~]# rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
或
[root@localhost ~]# rpm -ivh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
1.3.安装MySql
[root@localhost ~]# yum install -y mysql-server
或
[root@localhost ~]# yum install mysql-community-server
如果显示以下内容说明安装成功Complete!
1.4.修改mysql默认字符集
这里我们需要设置成utf8,打开my.cnf配置文件
vi /etc/my.cnf
添加以下内容:
//在[mysqld]的下面添加服务端字符集
character-set-server=utf8
collation-server=utf8_general_ci//需要在最下方填写客户端字符集
[client]
default-character-set=utf8
1.5.设置开机启动Mysql
[root@localhost ~]# systemctl enable mysqld.service
检查是否开机自动启动设置成功
[root@localhost ~]# systemctl list-unit-files | grep mysqld
如果显示以下内容说明已经完成自动启动安装
mysqld.service enabled
1.6.设置开启服务
[root@localhost ~]# systemctl start mysqld.service
或
[root@localhost ~]# service mysqld start
1.7.查看MySql默认密码
直接获取原密码
[root@localhost ~]# grep 'temporary password' /var/share/log/mysqld.log
查看日志获取
[root@localhost ~]# cat /var/share/log/mysqld.log
在root@localhost: 后面的就是初始密码,或者默认密码为空
1.8.登陆MySql,输入用户名和密码
[root@localhost ~]# mysql -uroot -p
1.9.修改mysql登录密码
# 设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW
set global validate_password_policy=LOW;
# 当前密码长度为 8 ,按照我们常用的设置为 6 位的密码。
set global validate_password_length=6;
# 设置mysql密码,只要满足六位的长度。
alter user 'root'@'localhost' identified by '123456';
1.10.授予远程连接权限
mysql> grant all privileges on *.* to 'root' @'%' identified by '密码';
mysql> flush privileges;
高版本数据库不能按照grant all privileges on . to “root”@“%” identified by “xxxx”;去修改用户权限
高版本修改用户权限方法:
先创建远程用户,再授权
mysql> create user 'root'@'%' identified by 'password';
Query OK, 0 rows affected (0.03 sec)
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
1.11.关闭Linux系统防火墙
systemctl stop firewalld.service
1.12 only_full_group_by问题
Java 应用连接 MySQL 8 数据库遇到以下问题:
2023-11-13 15:28:58 WARN 14972 --- [xec-9] i.SqlExceptionHelper137 : SQL Error: 1055, SQLState: 42000
2023-11-13 15:28:58 ERROR 14972 --- [xec-9] i.SqlExceptionHelper142 : (conn=10930) Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'a.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
2023-11-13 15:28:58 ERROR 14972 --- [xec-9] ller.aop.ValidateAop64 : could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
分析:
ONLY_FULL_GROUP_BY 的意思是针对 GROUP BY 聚合操作,如果 SELECT 中的列没有在 GROUP BY 中出现,那么这个 SQL 是不合法的,因为列不在 GROUP BY 从句中。
解决方案一:
使用 MySQL 客户端查询 sql_mode,发现包含 ONLY_FULL_GROUP_BY,使用 SET 命令更新,然后再次查询发现 ONLY_FULL_GROUP_BY 已不存在。
mysql> SELECT @@global.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SET @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@global.sql_mode;
+----------------------------------------------------------------------------------------------------+
| @@global.sql_mode |
+----------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> USE DB_NAME
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)
注意:
SET @@global.sql_mode 修改了全局 sql_mode,只对新建的数据库生效,对于已经存在的数据库,需要使用 USE 命令先切换到具体数据库,然后执行 SET sql_mode 命令;
这种方案在 MySQL 服务重启后会失效,即重启后 ONLY_FULL_GROUP_BY 还会出现。
解决方案二:
修改 MySQL 配置文件,Windows 操作系统中为 my.ini 文件,Linux 操作系统中使用 RPM 安装包安装后配置文件位于 /etc/my.cnf。
在 [mysqld] 添加:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
重启 MySQL 服务。
systemctl restart mysqld.service
2. 安装Java JDK 8
2.1.安装Java JDK 8:
sudo yum install java-1.8.0-openjdk-devel
2.2.检查Java版本:
java -version
如果成功安装,你应该可以看到类似以下的版本信息:
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
2.3.设置JAVA_HOME环境变量:
编辑/etc/profile文件,将以下行添加到文件底部:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
2.4. 使之生效:
执行以下命令,使之生效:
source /etc/profile
3. 安装Nginx
3.1. 更新系统软件包:
sudo yum update
3.2. 安装EPEL存储库:
sudo yum install epel-release
3.3. 安装Nginx:
sudo yum install nginx
3.4. 启动Nginx服务:
sudo systemctl start nginx
3.5. 设置Nginx服务自启动:
sudo systemctl enable nginx
3.6. 验证Nginx是否运行:
sudo systemctl status nginx
如果一切正常,输出应该是“Active: active (running)”或者类似的信息。
3.7. 开启gzip压缩
以上安装方法nginx的配置文件位于/usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
location / {
try_files $uri $uri/ /index.html;
root C:/nginx-1.18.0/html/gzip/dist;
index index.html index.htm;
}
location /api/ {
proxy_pass http://localhost:6666/;
}
# 主要是下方的gizp配置哦,直接复制粘贴就可以使用啦,亲测有效哦
gzip on; # 开启gzip压缩
gzip_min_length 4k; # 小于4k的文件不会被压缩,大于4k的文件才会去压缩
gzip_buffers 16 8k; # 处理请求压缩的缓冲区数量和大小,比如8k为单位申请16倍内存空间;使用默认即可,不用修改
gzip_http_version 1.1; # 早期版本http不支持,指定默认兼容,不用修改
gzip_comp_level 2; # gzip 压缩级别,1-9,理论上数字越大压缩的越好,也越占用CPU时间。实际上超过2的再压缩,只能压缩一点点了,但是cpu确是有点浪费。因为2就够用了
# 压缩的文件类型 MIME类型,百度一下,一大把 # css # xml # 识别php # 图片
gzip_types text/plain application/x-javascript application/javascript text/javascript text/css application/xml application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/x-woff font/ttf;
# text # 早期js # js # js的另一种写法 # .eot字体 # woff字体 # ttf字体
gzip_vary on; # 是否在http header中添加Vary: Accept-Encoding,一般情况下建议开启
}
重新加载配置
nginx -s reload
4. 安装Redis数据库:
sudo yum -y install redis
安装好后启动Redis服务即可:
sudo systemctl start redis
这里同样可以使用redis-cli进入Redis命令行模式操作。
为了可以使Redis能被远程连接,需要修改配置文件,路径为/etc/redis.conf
vi /etc/redis.conf
注释这一行:
#bind 127.0.0.1
推荐给Redis设置密码,自行修 requirepass 参数
修改配置文件
requirepass 密码
然后重启Redis服务:
sudo systemctl restart redis
添加 6379 到防火墙
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
常用命令
# 启动redis服务器
systemctl start redis.service
# 停止redis服务器
systemctl stop redis.service
# 重新启动redis服务器
systemctl restart redis.service
# 获取redis服务器的运行状态
systemctl status redis.service
# 开机启动redis服务器
systemctl enable redis.service
# 开机禁用redis服务器
systemctl disable redis.service
CentOS添加Swap分区
下面命令可以创建一个4G的文件,时间会稍长,耐心等待一下
dd if=/dev/zero of=/data/swap bs=512 count=8388616
bs*count即为容量,如果需要2G的swap可以使用
dd if=/dev/zero of=/data/swap bs=1k count=2048000
of=后面是创建的文件路径,这里以/data/swap为例,如果创建在其他目录下后续的命令也要修改为自己的目录。
将文件设置为swap分区
mkswap /data/swap
启用swap分区
swapon /data/swap
添加到指令到fstab文件中这样系统引导时会自动启动
echo "/data/swap swap swap defaults 0 0" >> /etc/fstab
查看是否生效可用文章来源:https://www.toymoban.com/news/detail-703978.html
free -m
如果需要关闭swap分区可以依次执行如下命令文章来源地址https://www.toymoban.com/news/detail-703978.html
swapoff /data/swap
swapoff -a >/dev/null
rm -rf /data/swap
到了这里,关于CentOS云服务器部署配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!