@TOC
一、Linux防火墙配置
1.1.关闭防火墙
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
1.2.放行80端口
# 放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload
1.3.开启防火墙
systemctl start firewalld
1.4.重启防火墙
systemctl restart firewalld
1.5.重载规则
firewall-cmd --reload
1.6.查看已配置规则
firewall-cmd --list-all
1.7.指定端口和ip访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.229.136" port protocol="tcp" port="8080" accept"
1.8.移除规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.229.136" port protocol="tcp" port="8080" accept"
1.9.查询防火墙中指定的端口是否开放
firewall-cmd --query-port=9002/tcp
1.10.开放一个指定的端口9002
# --add-port=9002/tcp,表示添加指定9002端口,格式为:端口/通讯协议
# --permanent表示设置为持久
# --zone 表示作用域
firewall-cmd --zone=public --add-port=9002/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload
# 再次查询开放端口
firewall-cmd --list-ports
1.11.批量添加开放端口
# --add-port表示添加指定端口
# --permanent表示设置为持久
firewall-cmd --zone=public --add-port=9001-9003/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload
# 再次查询开放端口
firewall-cmd --list-ports
1.12移除一个指定的端口9002
# --remove-port表示移除指定端口
firewall-cmd --zone=public --remove-port=9002/tcp --permanent
# 重新加载防火墙
firewall-cmd --reload
# 再次查询开放端口
firewall-cmd --list-ports
@TOC
二、Linux配置静态上网
2.1.配置上网
- 修改配置网卡配置文件
- 我用的版本是CentOS-7.9.29-x86_64-Minimal-2207-02,配置上网就无需配置,低版本需要配置
- 下载网址:http://mirror.datacenter.mn/centos/7.9.2009/isos/x86_64/
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="aaf96f45-f242-4717-8c4b-86b751cd72e6"
DEVICE="ens33"
# 修改ONBOOT="yes"
ONBOOT="yes"
# 重启网络服务
systemctl restart network
# 测试
ping qq.com
2.2.配置静态IP
之前的网络配置是使用dhcp方式分配ip地址,这种方式会在系统每次联网的时候分配一个ip给我们用,也就是说有可能系统下次启动的时候ip会变,这样非常不方便我们管理。
- 配置静态ip首先需要打开网卡配置文件
- 修改完成后,重启测试即可--查看配置上网测试
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
# 修改dhcp为static
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="aaf96f45-f242-4717-8c4b-86b751cd72e6"
DEVICE="ens33"
ONBOOT="yes"
# 手动配置ip地址,添加以下配置
# ip addr 命令获取ip地址
IPADDR="192.168.229.136"
NETMASK="255.255.255.0"
# 网关获取如下
GATEWAY="192.168.229.2"
DNS1="8.8.8.8"
# 重启网络服务
systemctl restart network
# 测试
ping qq.com
三、Linux下安装 Redis7【redis-7.2.4.tar.gz】
3.1.下载redis的安装包
官网下载:https://redis.io/download
历史版本:https://download.redis.io/releases/
3.1.1.手动下载Redis压缩包并上传【redis-7.2.4.tar.gz】
3.1.2.wget工具下载redis-7.2.4.tar.gz
# 安装wget工具
yum -y install wget
# 创建自己的redis文件夹
mkdir -p /redis/core
cd /redis/core
# 自己复制的链接地址
wget https://download.redis.io/releases/redis-7.2.4.tar.gz
3.2.将安装包进行解压缩
tar -zxf redis-7.2.4.tar.gz
3.3.进入redis的安装包
cd redis-7.2.4
3.4.检查是否有gcc 环境
gcc -v
# 首先安装编译需要的环境依赖
yum install gcc-c++
3.5.编译和安装并指定安装目录 make install PREFIX=/usr/local/redis
# 如果安装redis出现错误执行以下命令,需要清理源码目录后再次执行编译
make distclean
# PREFIX关键字的作用是编译的时候用于指定程序存放的路径,指定了redis必须存在 /usr/local/redis 目录
#方便后续的卸载,直接rm -rf /usr/local/redis 即可删除redis
make PREFIX=/usr/local/redis install
# 可执行文件存放在 /usr/local/bin 目录
# 库文件会存放在 /usr/local/lib 目录
# 配置文件会存放在/usr/local/etc目录
# 其他的资源文件会存放在 usr/local/share 目录
# 不建议,不方便后续卸载
make install
3.5.拷贝redis配置文件redis.conf
到/usr/local/redis目录中
# 查找redis.conf
find / -name redis.conf
# 将redis的源码目录中复制 redis.conf 到 redis 的安装目录
cp /redis/core/redis-7.2.4/redis.conf /usr/local/redis
3.6.redis的bin目录文件作用介绍
- 可执行命令在/usr/local/bin 目录
- redis-benchmark: 性能测试工具,可以在自己机器运行,看看自己机器性能如何
- redis-check-aof:修复有问题的 AOF 文件,rdb 和 aof 后面讲
- redis-check-rdb:修复有问题的 dump.rdb 文件
- redis-sentinel:Redis 集群使用
- redis-server:Redis 服务器启动命令
- redis-cli:客户端,操作入口
3.7.修改redis.conf配置文件
requirepass 123456 # 开启redis验证,修改为自己的密码
protected-mode no #需要远程连接,设置为no,取消保护模式
#bind 127.0.0.1 # 允许redis远程连接,必须注释掉(注释或者改为bind 0.0.0.0)
port 6379 #redis的端口
daemonize yes #后台启动redis设置为yes,开启守护进程模式
appendonly yes #开启redis数据持久化
3.8.重要的配置项
配置项名称 | 配置项值范围 | 说明 |
---|---|---|
daemonize | yes、no | yes表示启用守护进程,默认是no即不以守护进程方式运行。 其中Windows系统下不支持启用守护进程方式运行 |
port | 指定 Redis 监听端口,默认端口为 6379 | |
bind | 绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下 或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。 | |
protected-mode | yes 、no | 保护模式,该模式控制外部网是否可以连接redis服务,默认是yes, 所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。 |
timeout | 300 | 当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能 |
loglevel | debug、verbose、notice、warning | 日志级别,默认为 notice |
databases | 16 | 设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到 |
rdbcompression | yes、no | 指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩, 如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。 |
dbfilename | dump.rdb | 指定本地数据库文件名,默认值为 dump.rdb |
dir | 指定本地数据库存放目录 | |
requirepass | 设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时 需要通过 AUTH | |
maxclients | 0 | 设置同一时间最大客户端连接数,默认无限制,Redis 可以同时 打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数, 如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时, Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。 |
maxmemory | XXX | 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中, 达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key, 当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作, 但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存, Value 会存放在 swap 区。配置项值范围列里XXX为数值。 |
3.9.验证redis是否成功安装
cd /usr/local/redis/bin/
./redis-server -v
./redis-cli -v
3.10.运行时出现以下警告
123156:C 23 Jan 2024 22:22:22.467 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
- 原因:当前系统不允许超量申请内存空间
- 解决:让当前系统允许超量申请内存空间
# 编辑sysctl.conf文件
vim /etc/sysctl.conf
#添加以下行,修改配置启用内存过度分配
vm.overcommit_memory = 1
#执行命令"sysctl -p" 或 重启系统,使配置生效
sysctl -p
# 或者使更改生效,运行以下命令
sysctl vm.overcommit_memory=1
# 验证更改是否已生效
cat /proc/sys/vm/overcommit_memory
# 返回1,则表示内存过度分配已成功启用
3.11.启动redis
cd /usr/local/redis
#进入redis安装目录,执行下面命令启动redis服务
./bin/redis-server redis.conf
# 查看 Redis 服务器进程
ps -ef | grep redis
3.12.启动redis-cli测试redis
cd /usr/local/redis
#进入redis安装目录,执行下面命令启动redis-cli
./bin/redis-cli
3.13.关闭 Redis 服务器
./bin/redis-cli shutdown
# 查看 Redis 服务器进程
ps -ef | grep redis
# kill -9 进程的PID
kill -9 27320
四、将redis设置成系统服务
4.1.创建redis服务文件
vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis Server
After=network.target
[Service]
Type=forking
# 配置成自己的路径
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
- Description:服务描述
- After:指定服务依赖的其他服务启动之后再启动
- Type:指定服务的类型,这里设置为forking,表示服务以fork方式启动
- ExecStart:指定服务的启动命令
- ExecStop:指定服务的停止命令
- Restart:指定服务在退出后是否自动重启
- WantedBy:指定服务的启动级别
4.2.重新加载服务配置文件使之生效
# 重新加载服务配置文件
systemctl daemon-reload
4.3.服务操作命令
#启动redis服务
systemctl start redis
#停止redis服务
systemctl stop redis
#重新启动服务
systemctl restart redis
#查看服务当前状态
systemctl status redis
#设置开机自启动
systemctl enable redis
#停止开机自启动
systemctl disable redis
五、配置Redis环境变量
5.1.编辑环境变量配置文件
vim /etc/profile
5.2.文件末尾添加以下内容
# redis
export REDIS_HOME=/usr/local/redis
export PATH=$PATH:$REDIS_HOME/bin/
5.3.保存并退出后,刷新配置信息
source /etc/profile
5.4.验证环境变量
redis-server -v
redis-cli -v
六、Nginx环境准备
6.1.Nginx版本
Nginx的官方网站为: http://nginx.org
Nginx的官方下载网站为http://nginx.org/en/download.html
6.2.获取Nginx源码
打开上述网站,就可以查看到Nginx的所有版本,选中自己需要的版本进行下载。
6.3.准备服务器系统
6.3.1.环境准备
FinalShell SSH工具官网:http://www.hostbuf.com/
FinalShell SSH工具官网下载:http://www.hostbuf.com/t/988.html
Centos官网:https://www.centos.org/download/
MobaXterm官网:https://mobaxterm.mobatek.net/
MobaXterm官网下载:https://mobaxterm.mobatek.net/download.html
6.3.2.确认centos的内核
准备一个内核为2.6及以上版本的操作系统,因为linux2.6及以上内核才支持epoll,而Nginx需要解决高并发压力问题是需要用到epoll
# 查询linux的内核版本
uname -a
6.3.3.确保centos能联网
ping www.baidu.com
6.3.4.确认关闭防火墙
关闭的方式有如下两种:
# 关闭运行的防火墙,系统重新启动后,防火墙将重新打开
systemctl stop firewalld
# 永久关闭防火墙,,系统重新启动后,防火墙依然关闭
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld
6.3.5.确认停用selinux
selinux(security-enhanced linux),美国安全局对于强制访问控制的实现,在linux2.6内核以后的版本中,selinux已经成功内核中的一部分。可以说selinux是linux史上最杰出的新安全子系统之一。虽然有了selinux,我们的系统会更安全,但是对于我们的学习Nginx的历程中,会多很多设置,所以这块建议大家将selinux进行关闭。
# 查看状态
sestatus
如果查看不是disabled状态,我们可以通过修改配置文件来进行设置,修改SELINUX=disabled,然后重启下系统即可生效。
vim /etc/selinux/config
# 重启系统
reboot
七、Nginx安装方式【源码安装和yum安装】
7.1.Nginx源码安装需要提前准备
7.1.1.GCC编译器
Nginx是使用C语言编写的程序,因此想要运行Nginx就需要安装一个编译工具。
GCC就是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了C语言。
# 安装gcc
yum install -y gcc
# 查看gcc是否安装成功
gcc --version
7.1.2.PCRE
Nginx在编译过程中需要使用到PCRE库(perl Compatible Regular Expressoin 兼容正则表达式库),因为在Nginx的Rewrite模块和http核心模块都会使用到PCRE正则表达式语法。
# 安装 PCRE库
yum install -y pcre pcre-devel
rpm -qa pcre pcre-devel
7.1.3.zlib
zlib库提供了开发人员的压缩算法,在Nginx的各个模块中需要使用gzip压缩,所以我们也需要提前安装其库及源代码zlib和zlib-devel
yum install -y zlib zlib-devel
rpm -qa zlib zlib-devel
7.1.4.OpenSSL
- OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包进行安全通信,并且避免被窃听。
- SSL:Secure Sockets Layer安全套接协议的缩写,可以在Internet上提供秘密性传输,其目标是保证两个应用间通信的
保密性和可靠性
。- - 在Nginx中,如果服务器需要提供安全网页时就需要用到OpenSSL库,所以我们需要对OpenSSL的库文件及它的开发安装包进行一个安装。
yum install -y openssl openssl-devel
rpm -qa openssl openssl-devel
上述命令,一个个来的话比较麻烦,我们也可以通过一条命令来进行安装
# 一条命令来进行全部安装
yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
gcc --version
rpm -qa pcre pcre-devel zlib zlib-devel openssl openssl-devel
7.1.5.警告时缺少安装包
安装gcc
yum -y install gcc
checking for OS
+ Linux 3.10.0-693.el7.x86_64 x86_64 checking for C compiler ... not found
./configure: error: C compiler cc is not found
安装perl库
yum install -y pcer-devl
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=<path> option.
安装zlib库
yum install -y zlib zlib-devel
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib=<path> option.
7.2.方案一:Nginx的源码安装
7.2.1.进入官网查找需要下载版本的链接地址,然后使用wget命令进行下载
yum -y install wget
wget http://nginx.org/download/nginx-1.24.0.tar.gz
7.2.2.将下载的资源进行包管理
mkdir -p /app/nginx/core
mv nginx-1.24.0.tar.gz /app/nginx/core
7.2.3.解压缩
cd /app/nginx/core
tar -zxvf nginx-1.24.0.tar.gz
7.2.4.进入资源文件中,发现configure
cd /app/nginx/core/nginx-1.24.0
7.2.5.指定编译参数,编译Nginx复杂安装
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--modules-path=/usr/local/nginx/modules \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--lock-path=/usr/local/nginx/logs/nginx.lock \
--with-http_gzip_static_module \
--with-http_ssl_module \
--with-stream
7.2.6.编译&安装
make & make install
7.2.7.启动Nginx
进入安装好的目录 /usr/local/nginx/sbin
cd /usr/local/nginx/sbin
./nginx -V 查看版本详细信息
./nginx 启动
./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
7.2.8.测试
7.3.方案二:yum安装【默认安装最新版】
官网:http://nginx.org/en/docs/install.html
RHEL and derivatives:http://nginx.org/en/linux_packages.html#RHEL
使用源码进行简单安装,我们会发现安装的过程比较繁琐,需要提前准备GCC编译器、PCRE兼容正则表达式库、zlib压缩库、OpenSSL安全通信的软件库包,然后才能进行Nginx的安装。
7.3.1.官方安装步骤
RHEL and derivatives:http://nginx.org/en/linux_packages.html#RHEL
RHEL and derivatives
This section applies to Red Hat Enterprise Linux and its derivatives such as CentOS, Oracle Linux, Rocky Linux, AlmaLinux.
Install the prerequisites:
sudo yum install yum-utils
To set up the yum repository, create the file named /etc/yum.repos.d/nginx.repo
with the following contents:
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
By default, the repository for stable nginx packages is used. If you would like to use mainline nginx packages, run the following command:
# 切换成主线版本,暂时不需要
sudo yum-config-manager --enable nginx-mainline
To install nginx, run the following command:
sudo yum install nginx
When prompted to accept the GPG key, verify that the fingerprint matches 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
, and if so, accept it.
7.3.2.安装yum-utils工具
sudo yum install -y yum-utils
7.3.3.添加yum源文件
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
7.3.4.查看是否安装成功
yum list | grep nginx
7.3.5.使用yum进行安装
yum -y install nginx
7.3.6.查看nginx的安装位置
whereis nginx
7.3.7.启动测试
cd /usr/sbin
./nginx
7.4.卸载nginx
7.4.1.步骤一:需要将nginx的进程关闭
# 先看下nginx是否在运行中
ps aux | grep nginx
# 如果在运行中,则停止
./nginx -s stop 或者直接杀死进程 pkill nginx或 kill -9 进程号
7.4.2.步骤二:将安装的nginx进行删除
cd ~
# 找到所有nginx有关文件
find / -name nginx*
# 删除有关nginx的文件(linux中一切都文件)
rm -rf /usr/local/nginx
7.4.3.步骤三:将安装包之前编译的环境清除掉
cd /app/nginx/core/nginx-1.24.0
make clean
# 卸载nginx的有关依赖
yum remove nginx
八、Nginx目录结构分析
8.1.Nginx目录结构
# 安装tree工具展示目录结构
yum -y install tree
# 查看centos系统上的文件目录结构
tree /usr/local/nginx
# 显示所有文件和目录
tree /usr/local/nginx -a
8.2.nginx所有配置文件目录
[root@192 sbin]# tree /usr/local/nginx
/usr/local/nginx
├── client_body_temp
├── conf # 用来存放配置文件相关的
│ ├── fastcgi.conf # fastcgi相关配置文件
│ ├── fastcgi.conf.default # fastcgi.conf的备份文件
│ ├── fastcgi_params # fastcgi的参数文件
│ ├── fastcgi_params.default # fastcgi的参数备份文件
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types # 媒体类型,记录的是HTTP协议中的Content-Type的值和文件后缀名的对应关系
│ ├── mime.types.default # mime.types的备份文件
│ ├── nginx.conf # 这个是Nginx的核心配置文件
│ ├── nginx.conf.default # nginx.conf的备份文件
│ ├── scgi_params # scgi的参数文件
│ ├── scgi_params.default # scgi的参数备份文件
│ ├── uwsgi_params # uwsgi的参数文件
│ ├── uwsgi_params.default # uwsgi的参数备份文件
│ └── win-utf # koi-utf、koi-win、win-utf这三个文件都是与编码转换映射相关的配置文件,用来将一种编码转换成另一种编码
├── fastcgi_temp
├── html # 存放nginx自带的两个静态的html页面
│ ├── 50x.html # 访问失败后的失败页面
│ └── index.html # 成功访问的默认首页
├── logs # 记录入门的文件,当nginx服务器启动后,这里面会有 access.log error.log 和nginx.pid三个文件出现
│ ├── access.log # 访问日志
│ ├── error.log # 错误日志
│ └── nginx.pid # nginx进程的PID
├── proxy_temp
├── sbin # nginx的主程序
│ └── nginx # nginx是用来控制Nginx的启动和停止等相关的命令
├── scgi_temp
└── uwsgi_temp
# 查看Nginx的PID
more /usr/local/nginx/logs/nginx.pid
# 查看日志
tail -f /usr/local/nginx/logs/access.log
tail -f /usr/local/nginx/logs/error.log
8.3.nginx.conf
Nginx的核心配置文件默认是放在/usr/local/nginx/conf/nginx.conf
vi /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
8.4.Nginx基础配置文件nginx.conf 解读
# 指令名 指令值; #全局块,主要设置Nginx服务器整体运行的配置指令
worker_processes 1; # 默认为1,表示开启一个业务进程
# events块,主要设置,Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大
events { # 事件驱动模块
accept_mutex on; #设置Nginx网络连接序列化,防止多个进程对连接的争抢
multi_accept on; #设置Nginx的worker进程是否可以同时接收多个网络请求
worker_connections 1024; # 设置Nginx单个worker进程最大的连接数
use epoll; #设置Nginx使用的事件驱动模型,使用epoll函数来优化Ngin
}
# http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置...
http {
include mime.types; # 引入http mime类型
default_type application/octet-stream; # 如果mime类型没有匹配上,默认使用二进制流的方式传输
sendfile on; # 使用limux的sendfile(socket,file,len)高效网络传输,也就是数据0拷贝
tcp_nopush on; # 主要是用来提升网络包的传输效率
tcp_nodelay on; # 提高网络包传输的实时性
keepalive_timeout 65;
include nginx_gzip.conf;
# server块,是Nginx配置和虚拟主机vhost相关的内容
server { # 虚拟主机配置
listen 80; # 监听端口号80
server_name localhost; # 域名、主机名
# location块,基于Nginx服务器接收请求字符串与location后面的值进行匹配,对特定请求进行处理
location / { # 匹配路径
root html; # 文件根目录
index index.html index.htm; # 默认页名称
}
error_page 500 502 503 504 /50x.html; # 报编码错误对应页面
location = /50x.html {
root html;
}
}
}
nginx_gzip.conf
# Gzip压缩功能的实例配置
gzip on; #开启gzip功能
gzip_types *; #压缩源文件类型,根据具体的访问资源类型设定
gzip_comp_level 6; #gzip压缩级别
gzip_min_length 1024; #进行压缩响应页面的最小长度,content-length
gzip_buffers 4 16K; #缓存空间大小
gzip_http_version 1.1; #指定压缩响应所需要的最低HTTP请求版本
gzip_vary on; #往头信息中添加压缩标识
gzip_disable "MSIE [1-6]\."; #对IE6以下的版本都不进行压缩
gzip_proxied off; #nginx作为反向代理压缩服务端返回数据的条件
gzip on;
gzip_types *;
gzip_comp_level 6;
gzip_min_length 1024;
gzip_buffers 4 16K;
gzip_http_version 1.1;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
gzip_proxied off;
九、Nginx服务器版本升级和新增模块
需求:Nginx的版本最开始使用的是nginx-1.22.1,由于服务升级,需要将Nginx的版本升级到nginx-1.24.0,要求Nginx不能中断提供服务。
为了应对上述的需求,这里我们给大家提供两种解决方案:
方案一:使用Nginx服务信号完成Nginx的升级
方案二:使用Nginx安装目录的make命令完成升级
9.1.环境准备
9.1.1.先准备两个版本的Nginx分别是 1.22.1和1.24.0
9.1.2.使用Nginx源码安装的方式将1.22.1版本安装成功并正确访问
# 进入安装目录,指定编译参数,按照自己需求
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--modules-path=/usr/local/nginx/modules \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--lock-path=/usr/local/nginx/logs/nginx.lock \
--with-http_gzip_static_module \
--with-http_ssl_module \
--with-stream
make && make install
9.1.3.将Nginx1.24.0进行参数配置和编译,不需要进行安装。
# 进入安装目录,指定编译参数,按照自己需求
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--modules-path=/usr/local/nginx/modules \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--lock-path=/usr/local/nginx/logs/nginx.lock \
--with-http_gzip_static_module \
--with-http_ssl_module \
--with-stream
# 不需要进行安装,直接make
make
9.2.方案一:使用Nginx服务信号进行升级
9.2.1.将1.22.1版本的sbin目录下的nginx进行备份
cd /usr/local/nginx/sbin
mv nginx nginxold
9.2.2.将Nginx1.24.0安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin
目录下
cd /nginx/core/nginx-1.24.0/objs
cp nginx /usr/local/nginx/sbin
9.2.3.发送信号USR2给Nginx的1.22.1版本对应的master进程
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
9.2.4.发送信号QUIT给Nginx的1.22.1版本对应的master进程
kill -QUIT `more /usr/local/logs/nginx.pid.oldbin`
9.3.方案二:使用Nginx安装目录的make upgrade命令完成升级
9.3.1.将1.22.1版本的sbin目录下的nginx进行备份
cd /usr/local/nginx/sbin
mv nginx nginxold
9.3.2.将Nginx1.24.0安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin
目录下
cd /nginx/core/nginx-1.24.0/objs
cp nginx /usr/local/nginx/sbin
9.3.3.进入到安装目录,执行make upgrade
make upgrade
9.3.4.查看是否更新成功
cd /usr/local/nginx/sbin
./nginx -v
十、Nginx安装成系统服务
10.1.创建脚本
vi /usr/lib/systemd/system/nginx.service
10.2.服务脚本内容
[Unit]
Description=nginx web service
Documentation=http://nginx.org/en/docs/
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=default.target
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式ExecStartpre是检查配置文件
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
10.3.进行权限设置
chmod 755 /usr/lib/systemd/system/nginx.service
10.4.开机启动
# 重新加载系统服务
systemctl daemon-reload
# 启动服务
systemctl start nginx
#停止
systemctl stop nginx
#重启
systemctl restart nginx
#重新加载配置文件
systemctl reload nginx
# 查看nginx状态
systemctl status nginx
# 开机启动
systemctl enable nginx.service
# 查看nginx是否启动
ps -ef | grep nginx
十一、Linux下安装openresty
11.1.概述
OpenResty是由淘宝工程师开发的,所以其官方网站(http://openresty.org/)我们读起来是非常的方便。OpenResty是一个基于Nginx与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。所以本身OpenResty内部就已经集成了Nginx和Lua,所以我们使用起来会更加方便。
11.2.下载OpenResty并安装相关依赖:
https://openresty.org/download/openresty-1.25.3.1.tar.gz
# 安装相关依赖
yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 查询版本信息
gcc --version
# 查询是否安装成功
rpm -qa pcre pcre-devel zlib zlib-devel openssl openssl-devel
11.3.使用wget下载:
# 创建包管理
mkdir -p /openresty/core
cd /openresty/core
wget https://openresty.org/download/openresty-1.25.3.1.tar.gz
11.4.解压缩:
tar -zxf openresty-1.25.3.1.tar.gz
11.5.进入OpenResty目录:
cd openresty-1.25.3.1
11.6.编译和安装
./configure
make && make install
cd nginx-1.25.3
sh ./configure --prefix=/usr/local/openresty/nginx \
--with-cc-opt='-O2' \
--add-module=../ngx_devel_kit-0.3.3 \
--add-module=../echo-nginx-module-0.63 \
--add-module=../xss-nginx-module-0.06 \
--add-module=../ngx_coolkit-0.2 \
--add-module=../set-misc-nginx-module-0.33 \
--add-module=../form-input-nginx-module-0.12 \
--add-module=../encrypted-session-nginx-module-0.09 \
--add-module=../srcache-nginx-module-0.33 \
--add-module=../ngx_lua-0.10.26 \
--add-module=../ngx_lua_upstream-0.07 \
--add-module=../headers-more-nginx-module-0.37 \
--add-module=../array-var-nginx-module-0.06 \
--add-module=../memc-nginx-module-0.20 \
--add-module=../redis2-nginx-module-0.15 \
--add-module=../redis-nginx-module-0.3.9 \
--add-module=../rds-json-nginx-module-0.16 \
--add-module=../rds-csv-nginx-module-0.09 \
--add-module=../ngx_stream_lua-0.0.14 \
--with-ld-opt='-Wl,-rpath,/usr/local/openresty/luajit/lib' \
--with-stream --without-pcre2 --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module
11.7.进入OpenResty的目录,找到nginx:
cd /usr/local/openresty/nginx/
11.8.在sbin目录下启动nginx
11.9.通过浏览器访问测试【直接输入IP地址】
成功安装
11.10.设置环境变量
vim /etc/profile
# openresty
export PATH=$PATH:/usr/local/openresty/nginx/sbin
# 输入下面命令让设置的环境变量生效
source /etc/profile
# 查看版本信息
nginx -V
11.11.openresty安装成系统服务
# 创建脚本
vi /usr/lib/systemd/system/openresty.service
# 重新加载系统服务
systemctl daemon-reload
服务脚本内容
[Unit]
Description=openresty web service
Documentation=https://openresty.org/cn/
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t -c /usr/local/openresty/nginx/conf/nginx.conf
ExecStart=/usr/local/openresty/nginx/sbin/nginx
ExecReload=/usr/local/openresty/nginx/sbin/nginx -s reload
ExecStop=/usr/local/openresty/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=default.target
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式ExecStartpre是检查配置文件
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
11.12.openresty常用命令
# 启动服务
systemctl start openresty
#停止
systemctl stop openresty
#重启
systemctl restart openresty
#重新加载配置文件
systemctl reload openresty
# 查看nginx状态
systemctl status openresty
# 开机启动
systemctl enable openresty.service
# 查看nginx是否启动
ps -ef | grep openresty
十二、linux下安装jdk
12.1.下载Linux版本的JDK
JDK17官网下载:https://www.oracle.com/java/technologies/downloads/#java17
JDK8官网下载:https://www.oracle.com/java/technologies/downloads/#java8-linux
12.2.Linux安装JDk
#在usr目录下新建Java目录,然后将下载的JDK拷贝到这个新建的Java目录中
mkdir -p /usr/java
# 进入该文件夹
cd /usr/java
# 解压
tar -zxvf jdk-8u391-linux-x64.tar.gz
#重命名
mv jdk1.8.0_391 jdk1.8
12.3.设置环境变量
vim /etc/profile
shift+g快速将光标定位到最后一行,然后按“i”,再输入下面环境变量
#set java environment
JAVA_HOME=/usr/java/jdk1.8
CLASSPATH=$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
export PHTH JAVA_HOME CLASSPATH
# 输入下面命令让设置的环境变量生效
source /etc/profile
# 验证JDK是否安装成功
java -version
12.4.卸载JDK
# 查看Linux是否有安装JDK
java-version
# 列出所有已经被安装的,名字中包含jdk字符串的RPM包
rpm -qa | grep jdk
# rpm -q 查询rpm package name的包是否被安装
# rpm -a列出所有已经安装的rpm package软件包
# | 表示将输出结果(字符串)转向到后面的命令处理
# grep jdk 表示在当前结果中搜索包含jdk字样的字符串
# 查看JDK版本信息
java -version
# 查看JDK安装路径
which java
# 卸载JDk
rm -rf /usr/java/jdk1.8
# 删除java相关环境变量
vim /etc/profile
# 让环境变量生效
source /etc/profile
十三、linux下安装tomcat
13.1.下载Linux版本的Tomcat
官网下载地址:https://tomcat.apache.org/download-80.cgi
13.2.在usr目录下新建tomcat目录
将下载的tomcat拷贝到新建的tomcat目录中,fialshell工具可以直接拖动tomcat安装包到tomcat中
mkdir -p /usr/tomcat
13.3.进入到tomcat目录中解压下载的tomcat安装包
cd /usr/tomcat
ls -l
tar -zxvf apache-tomcat-8.5.98.tar.gz
给解压后的文件夹重新命名
mv apache-tomcat-8.5.98 tomcat8.5
13.4.配置环境变量-前提是已经安装并配置好了JDK
vim /etc/profile
shift+g快速将光标定位到最后一行,然后按i,再输入下面配置
CATALINA_HOME=/usr/tomcat/tomcat8.5
# 让环境变量生效
source /etc/profile
13.5.启动tomcat
13.5.1.方法一:进入到/usr/tomcat/tomcat8.5/bin目录
# 进入到当前bin目录
cd /usr/tomcat/tomcat8.5/bin
# 启动
./startup.sh
# 关闭
./shutdown.sh
13.5.2.方法二:无论在哪个目录都可以启动tomcat
# 启动
sh /usr/tomcat/tomcat8.5/bin/startup.sh
# 关闭
sh /usr/tomcat/tomcat8.5/bin/shutdown.sh
13.5.3.查看tomcat是否启动成功
ps -ef | grep tomcat
13.6.验证tomcat是否安装成功
Linux启动tomcat后,我们在浏览器中输入:http:\IP地址:8080 如果出现tomcat的主页则代表安装成功
http://192.168.229.139:8080/
13.7.阿里云 linux tomcat 无法访问方法
阿里云服务器防火墙没有放开8080端口
Linux 命令行防火墙 设置端口打开
#查看当前已经开放的端口
firewall-cmd --list-ports
#以下命令添加指定端口8080让防火墙放行
firewall-cmd --zone=public --add-port=8080/tcp --permanent
#添加成功后需要用firewall-cmd --reload 命令重载一下firewall服务才能生效
firewall-cmd --reload
十四、Linux下安装Mysql-5.7.41【tar包下载安装】
14.1.首先检查是否已经安装过mysql
rpm -qa | grep mysql
14.2.下载Linux版本的Mysql-5.7
Mysql官网:https://www.mysql.com/
下载网址:https://downloads.mysql.com/archives/community/
cat /etc/redhat-release
14.3.解压缩
首先使用第三方工具上传
# 创建一个文件夹,存放mysql
mkdir -p /usr/mysql
cd /usr/mysql
# 在当前目录下(mysql)下创建一个 mysql-5.7.41 文件夹
mkdir mysql-5.7.41
# 解压安装包到该目录下
tar -xvf mysql-5.7.41-1.el7.x86_64.rpm-bundle.tar -C mysql-5.7.41
[root@localhost mysql-5.7.41]# ls
mysql-community-client-5.7.41-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.41-1.el7.x86_64.rpm
mysql-community-server-5.7.41-1.el7.x86_64.rpm
mysql-community-common-5.7.41-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.41-1.el7.x86_64.rpm
mysql-community-test-5.7.41-1.el7.x86_64.rpm
mysql-community-devel-5.7.41-1.el7.x86_64.rpm
mysql-community-libs-5.7.41-1.el7.x86_64.rpm
mysql-community-embedded-5.7.41-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.41-1.el7.x86_64.rpm
14.4.安装执行 rpm 安装包需要先下载 openssl-devel 插件
解压后的文件都是 rpm 文件,因此需要用到 rpm 包资源管理器相关的指令安装这些 rpm 的安装包
yum install openssl-devel
14.5.安装 Mysql5.7 执行 rpm 安装包
安装完该插件之后,依次执行
以下命令安装这些 rpm 包
yum install openssl-devel
rpm -ivh mysql-community-common-5.7.41-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.41-1.el7.x86_64.rpm
yum remove mysql-libs
rpm -ivh mysql-community-libs-compat-5.7.41-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.41-1.el7.x86_64.rpm
# 至此所有依赖已安装完毕,下面安装客户端和服务端
rpm -ivh mysql-community-client-5.7.41-1.el7.x86_64.rpm
yum -y install net-tools
rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm
# 查询 MySQL 的安装文件
rpm -qa | grep -i mysql
# yum remove openssl-devel
# yum remove net-tools
问题1
[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-libs-5.7.41-1.el7.x86_64.rpm
警告:mysql-community-libs-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
错误:依赖检测失败:
mysql-community-common(x86-64) >= 5.7.9 被 mysql-community-libs-5.7.41-1.el7.x86_64 需要
mariadb-libs 被 mysql-community-libs-5.7.41-1.el7.x86_64 取代
解决方案1:清除之前安装过的依赖即可,最后重新安装下。
[root@localhost mysql-5.7.41]# yum remove mysql-libs
问题2
[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm
警告:mysql-community-server-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
错误:依赖检测失败:
net-tools 被 mysql-community-server-5.7.41-1.el7.x86_64 需要
解决方案2:
yum -y install net-tools
[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-common-5.7.41-1.el7.x86_64.rpm
警告:mysql-community-common-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-common-5.7.41-1.e################################# [100%]
[root@localhost mysql-5.7.41]#
[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-libs-5.7.41-1.el7.x86_64.rpm
警告:mysql-community-libs-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-libs-5.7.41-1.el7################################# [100%]
[root@localhost mysql-5.7.41]#
[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-libs-compat-5.7.41-1.el7.x86_64.rpm
警告:mysql-community-libs-compat-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-libs-compat-5.7.4################################# [100%]
[root@localhost mysql-5.7.41]#
[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-devel-5.7.41-1.el7.x86_64.rpm
警告:mysql-community-devel-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-devel-5.7.41-1.el################################# [100%]
[root@localhost mysql-5.7.41]#
[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-client-5.7.41-1.el7.x86_64.rpm
警告:mysql-community-client-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-client-5.7.41-1.e################################# [100%]
[root@localhost mysql-5.7.41]#
[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm
警告:mysql-community-server-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-server-5.7.41-1.e################################# [100%]
14.6.Mysql相关操作命令
# 启动 MySQL 服务
systemctl start mysqld
# 重启 MySQL 服务
systemctl restart mysqld
# 关闭 MySQL 服务
systemctl stop mysqld
#设置开机自启
systemctl enable mysqld
# 查看状态
systemctl status mysqld
14.7.查看Mysql-5.7 临时密码
rpm 安装 MySQL 会自动生成一个随机密码
grep 'temporary password' /var/log/mysqld.log
cat /var/log/mysqld.log
A temporary password is generated for root@localhost: 2yiNb5Pvum<4
账号:root
随机密码:2yiNb5Pvum<4
14.8.修改Mysql-5.7密码
# 登录
mysql -u root -p
2yiNb5Pvum<4
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql.123456';
# 设置密码的验证强度等级
#Mysql 5.7 版本
# 将密码复杂度校验调整简单类型
# set global validate_password_policy=MEDIUM;
set global validate_password_policy=LOW;
# 设置密码最少位数限制为 4 位
set global validate_password_length=4;
# 查看 mysql 初始的密码策略
SHOW VARIABLES LIKE 'validate_password%';
# 查看 mysql5.7 初始的密码策略
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
14.9.远程连接navicat--遇见问题
14.9.1.问题:1130 - Host '192.168.229.1' is not allowed to connect to this MySQL server
自己安装在本地的mysql默认时不允许进行远程登陆,如果想要远程访问本地的数据库需要修改访问权限,将’root‘访问权限修改为’%‘
14.9.2.连接服务器--修改权限
# 连接服务器
mysql -u root -p
# 看当前所有数据库
show databases;
# 进入mysql数据库
use mysql;
# 查看mysql数据库中所有的表
show tables;
# 执行更新权限语句
# 其中“%”代表所有的地址,意味着所有的地址都可以访问“root”
update user set Host='%' where User='root';
# 查看权限是否修改成功
select host,user from user;
# 刷新服务器配置
FLUSH PRIVILEGES;
14.9.3.连接成功
14.10.卸载Mysql-5.7
# 停止Mysql
systemctl stop mysqld
# 查询 MySQL 的安装文件
rpm -qa | grep -i mysql
# 卸载上述查询的所有安装包
rpm -e mysql-community-libs-5.7.41-1.el7.x86_64 --nodeps
rpm -e mysql-community-devel-5.7.41-1.el7.x86_64 --nodeps
rpm -e mysql-community-common-5.7.41-1.el7.x86_64 --nodeps
rpm -e mysql-community-libs-compat-5.7.41-1.el7.x86_64 --nodeps
rpm -e mysql-community-client-5.7.41-1.el7.x86_64 --nodeps
rpm -e mysql-community-server-5.7.41-1.el7.x86_64 --nodeps
# 再次查询 MySQL 的安装文件
rpm -qa | grep -i mysql
# 删除MySQL的数据存放目录
rm -rf /var/lib/mysql
# 找出服务器中分散的mysql文件夹,查询残留的文件和相关依赖,并删除
find / -name mysql
rm -rf [显示的文件夹路径,每个绝对路径中间用空格隔开]
# MySQL配置文件通常位于/etc/my.cnf或/etc/mysql/my.cnf下,MySQL日志文件通常位于/var/log/mysql下
# 删除mysql日志
rm -rf /var/log/mysqld.log
# 删除MySQL的配置文件备份
rm -rf /etc/my.cnf.rpmsave
# 删除mysql配置文件
rm -rf /etc/mysql/my.cnf
rm -rf /etc/my.cnf
# 清除MySQL用户和组
userdel mysql
groupdel mysql
十五、Linux下安装Mysql-8.0.34【tar包下载安装】
15.1.首先检查是否已经安装过mysql
rpm -qa | grep mysql
15.2.下载Linux版本的Mysql-8.0.34
Mysql官网:https://www.mysql.com/
下载网址:https://downloads.mysql.com/archives/community/
cat /etc/redhat-release
15.3.解压缩
首先使用第三方工具上传
# 创建一个文件夹,存放mysql
mkdir -p /usr/mysql
cd /usr/mysql
# 在当前目录下(mysql)下创建一个 mysql-5.7.41 文件夹
mkdir mysql-8.0.34
# 解压安装包到该目录下
tar -xvf mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar -C mysql-8.0.34
[root@localhost mysql-8.0.34]# ls
mysql-community-client-8.0.34-1.el7.x86_64.rpm
mysql-community-debuginfo-8.0.34-1.el7.x86_64.rpm
mysql-community-icu-data-files-8.0.34-1.el7.x86_64.rpm
mysql-community-server-8.0.34-1.el7.x86_64.rpm
mysql-community-client-plugins-8.0.34-1.el7.x86_64.rpm
mysql-community-devel-8.0.34-1.el7.x86_64.rpm
mysql-community-libs-8.0.34-1.el7.x86_64.rpm
mysql-community-server-debug-8.0.34-1.el7.x86_64.rpm
mysql-community-common-8.0.34-1.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.34-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.34-1.el7.x86_64.rpm
mysql-community-test-8.0.34-1.el7.x86_64.rpm
15.4.安装执行 rpm 安装包需要先下载 openssl-devel 插件
解压后的文件都是 rpm 文件,因此需要用到 rpm 包资源管理器相关的指令安装这些 rpm 的安装包
yum install openssl-devel
15.5.安装 Mysql8.0 执行 rpm 安装包
安装完该插件之后,依次执行以下命令安装这些 rpm 包
yum install openssl-devel
# yum install net-tools
rpm -ivh mysql-community-common-8.0.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.34-1.el7.x86_64.rpm
# 至此所有依赖已安装完毕,下面安装客户端和服务端
rpm -ivh mysql-community-client-8.0.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.34-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.34-1.el7.x86_64.rpm
# 查询 MySQL 的安装文件
rpm -qa | grep -i mysql
# yum remove openssl-devel
# yum remove net-tools
15.6.Mysql相关操作命令
# 启动 MySQL 服务
systemctl start mysqld
# 重启 MySQL 服务
systemctl restart mysqld
# 关闭 MySQL 服务
systemctl stop mysqld
#设置开机自启
systemctl enable mysqld
# 查看状态
systemctl status mysqld
15.7.查看Mysql-8.0 临时密码
rpm 安装 MySQL 会自动生成一个随机密码
grep 'temporary password' /var/log/mysqld.log
cat /var/log/mysqld.log
A temporary password is generated for root@localhost: ij9uN+hmchw2
账号:root
随机密码:ij9uN+hmchw2
15.8.修改Mysql-8.0 密码
# 登录
mysql -u root -p
ij9uN+hmchw2
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql.123456';
# 设置密码的验证强度等级
#Mysql 8.0 版本
# 将密码复杂度校验调整简单类型
# set global validate_password.policy=MEDIUM;
set global validate_password.policy=LOW;
# 设置密码最少位数限制为 4 位
set global validate_password.length=4;
# 查看 mysql 初始的密码策略
SHOW VARIABLES LIKE 'validate_password%';
mysql> SHOW VARIABLES LIKE 'validate_password%';
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
提示ERROR 1820,让我们先修改密码后才能查看规则。
# 查看 mysql8.0 初始的密码策略
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql.123456';
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+-------------------------------------------------+--------+
| Variable_name | Value |
+-------------------------------------------------+--------+
| validate_password.changed_characters_percentage | 0 |
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+-------------------------------------------------+--------+
8 rows in set (0.01 sec)
15.9.远程连接navicat--遇见问题
15.9.1.问题:1130 - Host '192.168.229.1' is not allowed to connect to this MySQL server
自己安装在本地的mysql默认时不允许进行远程登陆,如果想要远程访问本地的数据库需要修改访问权限,将’root‘访问权限修改为’%‘
15.9.2.连接服务器--修改权限
# 连接服务器
mysql -u root -p
# 看当前所有数据库
show databases;
# 进入mysql数据库
use mysql;
# 查看mysql数据库中所有的表
show tables;
# 执行更新权限语句
# 其中“%”代表所有的地址,意味着所有的地址都可以访问“root”
update user set Host='%' where User='root';
# 查看权限是否修改成功
select host,user from user;
# 刷新服务器配置
FLUSH PRIVILEGES;
15.9.3.连接成功
15.10.MySQL 8.0 配置mysql_native_password身份验证插件的password
方法一:
# 登录MySQL后输入
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword';
FLUSH PRIVILEGES;
方法二:
# 编辑my.cnf文件,更改默认的身份认证插件。
vi /etc/my.cnf
# 在[mysqld]中添加下边的代码
default_authentication_plugin=mysql_native_password
# 然后重启MySQL
service mysqld restart
15.11.卸载Mysql-8.0
# 停止Mysql
systemctl stop mysqld
# 查询 MySQL 的安装文件
rpm -qa | grep -i mysql
# 卸载上述查询的所有安装包
rpm -e mysql-community-client-plugins-8.0.34-1.el7.x86_64 --nodeps
rpm -e mysql-community-libs-compat-8.0.34-1.el7.x86_64 --nodeps
rpm -e mysql-community-client-8.0.34-1.el7.x86_64 --nodeps
rpm -e mysql-community-server-8.0.34-1.el7.x86_64 --nodeps
rpm -e mysql-community-common-8.0.34-1.el7.x86_64 --nodeps
rpm -e mysql-community-libs-8.0.34-1.el7.x86_64 --nodeps
rpm -e mysql-community-devel-8.0.34-1.el7.x86_64 --nodeps
rpm -e mysql-community-icu-data-files-8.0.34-1.el7.x86_64 --nodeps
# 再次查询 MySQL 的安装文件
rpm -qa | grep -i mysql
# 找出服务器中分散的mysql文件夹,查询残留的文件和相关依赖,并删除
find / -name mysql
rm -rf [显示的文件夹路径,每个绝对路径中间用空格隔开]
# MySQL配置文件通常位于/etc/my.cnf或/etc/mysql/my.cnf下,MySQL日志文件通常位于/var/log/mysql下
# 删除mysql日志
rm -rf /var/log/mysqld.log
# 删除MySQL的配置文件备份
rm -rf /etc/my.cnf.rpmsave
# 删除mysql配置文件
rm -rf /etc/mysql/my.cnf
rm -rf /etc/my.cnf
# 清除MySQL用户和组
userdel mysql
groupdel mysql
十六、Linux下--yum源安装Mysql
16.1.进入Mysql官网获取yum源安装包【无需登录账号】
# linux8 yum源
https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm
# linux7 yum源
https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
# linux6 yum源
https://dev.mysql.com/get/mysql80-community-release-el6-10.noarch.rpm
16.2.通过yum搜索命令查询mysql相关的包数据
yum list | grep mysql*
yum list mysql*
16.3.确保系统中已经安装了wget和rpm工具
# 确保系统中已经安装了wget和rpm工具
sudo yum install wget rpm
16.4.安装Mysql的yum源【centos7为例】
# linux8 yum源
wget https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm
# linux7 yum源
wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
# linux6 yum源
wget https://dev.mysql.com/get/mysql80-community-release-el6-10.noarch.rpm
16.5.安装Mysql的yum源
cd /etc/yum.repos.d
rpm -ivh mysql80-community-release-el7-11.noarch.rpm
16.6.默认安装Mysql8.0,修改为Mysql5.7
vi mysql-community.repo
16.7.安装mysql-server
# 安装方式一
yum -y install mysql-community-server
# 安装方式二
# 安装MySQL服务器、MySQL客户端和MySQL依赖库
yum -y install mysql-server mysql mysql-libs
# 安装方式三
# 只想安装MySQL服务器
yum -y install mysql-server
16.8.启动mysql-server
# 查看Mysql版本信息
mysql --version
# 启动mysql
systemctl start mysqld
# 查看mysql状态信息
systemctl status mysqld
16.9.获取mysql-server初始登陆的密码
grep 'temporary password' /var/log/mysqld.log
cat /var/log/mysqld.log
16.10.其余同上
16.11.卸载mysql
# 停止MySQL服务
systemctl stop mysqld
# 查询 MySQL 的安装文件
rpm -qa | grep -i mysql
# 删除已安装mysql
yum -y remove mysql80-community-release-el7-11.noarch
yum -y remove mysql-community-common-5.7.44-1.el7.x86_64
yum -y remove mysql-community-libs-compat-5.7.44-1.el7.x86_64
yum -y remove mysql-community-server-5.7.44-1.el7.x86_64
yum -y remove mysql-community-libs-5.7.44-1.el7.x86_64
yum -y remove mysql-community-client-5.7.44-1.el7.x86_64
# 查询 MySQL 的安装文件
rpm -qa | grep -i mysql
# 查看mysql相关的文件目录,并删除
find / -name mysql
rm -rf [显示的文件夹路径,每个绝对路径中间用空格隔开]
# MySQL配置文件通常位于/etc/my.cnf或/etc/mysql/my.cnf下,MySQL日志文件通常位于/var/log/mysql下
# 删除mysql日志
rm -rf /var/log/mysqld.log
# 删除MySQL的配置文件备份
rm -rf /etc/my.cnf.rpmsave
# 删除mysql配置文件
rm -rf /etc/mysql/my.cnf
rm -rf /etc/my.cnf
# 清除MySQL用户和组
userdel mysql
groupdel mysql
cd ~
find / -name mysql*
16.12.Mysql的yum源仓库
16.13.配置MySQL的安全性
mysql_secure_installation
- 重置root账号的密码
新密码,长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。特殊符号可以是()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/
- 删除匿名用户账号
- 禁止root账号远程登录
- 删除test库以及对test库的访问权限
- 重新加载授权表
十七、建库建表--字符集修改【防止插入中文报错】
linux中mysql5.7默认的字符集是latin1,在插入中文时会报错,通常是由于数据库字符集和字符串编码不匹配导致的。
所以一般在配置好mysql时需要修改字符集为utf8【又叫utfmb3,一般开发够用,一个字符用3个字节表示】
或者utfmb4【一个字符用4个字节表示,如果存储emoji表情,必须用utfmb4】
17.1.建库建表--指定字符集
show databases;
CREATE DATABASE IF NOT EXISTS school CHARACTER SET utf8mb4;
use school;
DROP TABLE IF EXISTS user;
CREATE TABLE `user` (
`id` int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(50) NOT NULL COMMENT '姓名'
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表';
-- ALTER TABLE user AUTO_INCREMENT = 1;
INSERT INTO user (name) VALUES('张三'),('李四'),('lily');
select * from user;
-- 查询表结构
desc user;
-- 表级
show table status from school like '%use%';
-- 列级
show full columns from user;
-- 查询指定表的建表语句
show create table user;
17.2.建库建表--不指定字符集
DROP TABLE IF EXISTS customer;
CREATE TABLE customer(
id INT AUTO_INCREMENT,
name VARCHAR(200),
PRIMARY KEY(id)
);
INSERT INTO customer (id,name) VALUES(1,'张三'),(2,'李四'),(3,'lily');
# ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'NAME' at row 1
-- 表级
show table status from school like '%customer%';
-- 列级
show full columns from customer;
-- 查询指定表的建表语句
show create table customer;
17.3.当前MySQL 支持的字符集
show charset;
show char set;
mysql> show char set;
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |
| tis620 | TIS620 Thai | tis620_thai_ci | 1 |
| euckr | EUC-KR Korean | euckr_korean_ci | 2 |
| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
| greek | ISO 8859-7 Greek | greek_general_ci | 1 |
| cp1250 | Windows Central European | cp1250_general_ci | 1 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| cp866 | DOS Russian | cp866_general_ci | 1 |
| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |
| macce | Mac Central European | macce_general_ci | 1 |
| macroman | Mac West European | macroman_general_ci | 1 |
| cp852 | DOS Central European | cp852_general_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |
| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |
| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |
| cp1256 | Windows Arabic | cp1256_general_ci | 1 |
| cp1257 | Windows Baltic | cp1257_general_ci | 1 |
| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |
| binary | Binary pseudo charset | binary | 1 |
| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |
| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |
| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 |
+----------+---------------------------------+---------------------+--------+
41 rows in set (0.00 sec)
17.4.将表字符集设置为utf8
# 对新建表、列,新插入数据有效
alter database 数据库名 character set utf8 collate utf8_bin;
#将表字符集设置为utf8
alter table 表名 default character set utf8 collate utf8_bin;
alter table customer character set utf8;
#将想要插入中文的字段的字符集改为utf8
alter table 表名 change 列名 新列名 char(20) character set utf8;
alter table customer change name nikname char(20) character set utf8;
INSERT INTO customer (id,nikname) VALUES(1,'张三'),(2,'李四'),(3,'lily');
#查看表的字符集和字段的字符集
show create table customer;
17.5.数据库中查看MySQL状态
status;
17.6.查看当前数据库的字符集
show variables like "%server%";
show variables like '%char%';
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.02 sec)
mysql> show variables like "%server%";
+---------------------------------+--------------------------------------+
| Variable_name | Value |
+---------------------------------+--------------------------------------+
| character_set_server | latin1 |
| collation_server | latin1_swedish_ci |
| innodb_ft_server_stopword_table | |
| server_id | 1 |
| server_id_bits | 32 |
| server_uuid | 72c696aa-cee7-11ee-9fe1-000c29c833e8 |
+---------------------------------+--------------------------------------+
6 rows in set (0.00 sec)
# 默认是latin1
十八、修改Mysql字符集my.cnf【防止插入中文报错】
18.1.编辑my.cnf配置文件【永久修改字符集】
# 查找my.cnf配置文件
find / -name my.cnf
vi /etc/my.cnf
my.cnf内容添加
[client]
default_character_set=utf8
[mysqld]
default-storage-engine=INNODB
collation_server = utf8_general_ci
character_set_server = utf8
18.2.重启mysql
systemctl restart mysqld
show variables like "%server%";
show variables like '%char%';
十九、mysql5.7使用group by语句:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
19.1.报错信息
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
column 'company.emp.ename' which is not functionally dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_by
19.2.原因分析
mysql 5.7以后默认启用sql_mode=only_full_group_by模式特性
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,
也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。
19.3.解决方法
19.3.1.方法一:登录Mysql
--1.查看模式中是否有only_full_group_by
select @@global.sql_mode;
--2.删除only_full_group_by
set @@global.sql_mode
='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
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_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
19.3.2.方法二:修改mysql的配置文件 /etc/my.cnf 或my.ini
在尾部添加以下内容,重新启动 mysql 即可
#Linux 用户
find / -name my.cnf
vi /etc/my.cnf
service restart mysqld
# 配置my.cnf或my.ini
[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
二十、Mysql字符集my.cnf【完整版】
[client]
default_character_set=utf8
[mysqld]
# 表示永久表(permanent tables)的默认存储引擎
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
collation_server = utf8_general_ci
character_set_server = utf8
二十一、MySQL登录报错
21.1.问题
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
21.2.原因
MySQL服务器停止则重新启动即可
密码输入错误
21.3.解决方法--修改密码
21.3.1.加上登录时跳过权限检查
#Linux 用户
find / -name my.cnf
vi /etc/my.cnf
#在[mysqld]中添加skip-grant-tables(登录时跳过权限检查)
skip-grant-tables
21.3.2.修改密码
# 重启数据库
systemctl restart mysqld
# 登录mysql,回车即可
mysql -uroot -p
# 进入mysql数据库
use mysql;
# 查看权限是否修改成功
select host,user,plugin,authentication_string from user;
# 刷新服务器配置
FLUSH PRIVILEGES;
# 没有用户创建用户 可能需要刷新
create user 'root'@'localhost' identified by 'Mysql.123456';
# 执行更新权限语句
# 其中“%”代表所有的地址,意味着所有的地址都可以访问“root”
update user set Host='%' where User='root';
# 更改密码
update mysql.user set authentication_string ='Mysql.123456' where user="root";
# 更改密码
alter user 'root'@'localhost' identified by 'Mysql.123456';
# 刷新服务器配置
FLUSH PRIVILEGES;
exit
# 将my.cnf中的skip-grant-tables去除
vi /etc/my.cnf
# 重启数据库
systemctl restart mysqld
评论