首页
关于
推荐
CSDN
Search
1
文件上传下载-io-流的理解-笔记
129 阅读
2
vue循环指令el-table-column展示图片src路径拼接
123 阅读
3
正则表达式,将字符串分割两部分
114 阅读
4
MySQL数据库练习【一】
110 阅读
5
MySQL数据库练习【三】
96 阅读
默认分类
Mysql
Java基础
一天一练
Mongodb
Nginx
Docker
FastDFS
面试题
云计算基础
linux基础
shell脚本
实验
工具
基础命令
redis
zookeeper
部署
案例
登录
Search
标签搜索
vue
Mysql
IO
面试题
良辰美景好时光
累计撰写
68
篇文章
累计收到
0
条评论
首页
栏目
默认分类
Mysql
Java基础
一天一练
Mongodb
Nginx
Docker
FastDFS
面试题
云计算基础
linux基础
shell脚本
实验
工具
基础命令
redis
zookeeper
部署
案例
页面
关于
推荐
CSDN
搜索到
16
篇与
的结果
2025-05-08
数据库基础及安装-1
数据库1.数据库原理1.1.E-R模型E-R图模型的组成是由实体,属性和联系三部份组成。实体:( Entity ) 实体是数据的使用者,代表软件系统中客观存在的生活中的实物,同一类实体构成实体集。 在ER图中,实体用矩形表示。 属性:( Attribute ) 实体中的所有特性称为属性,每个属性描述的是实体的单个特性。在ER图中,属性用椭圆形表示。 联系:( Relationship ) 描述了实体的属性之间的关联规则。在ER图中,联系用菱形表示。实体间的联系有三种类型:一对一联系 ( 1:1 ):例如,一个学号只能分配给一个同学,每个同学都有一个学号,则学号与同学的联系是一对一。 一对多联系 ( 1:n ):例如,一个老师可以教授多门课程,每门课程只能有一个老师教授,则老师与课程的联系是一对多。 多对多联系 ( m:n ):例如,一个同学可以报名多门课程,每门课程下有多个同学,则同学与课程的联系是多对多。1.2.设计数据库的基本原则--三大范式第一范式 1NF (确保每列保持原子性) 第二范式 2NF (确保表中的每列都和主键相关) 第三范式 3NF (确保每列都和主键列直接相关,而不是间接相关)1.3.MySQL执行查询语句执行流程MySQL数据库中的SQL查询语句执行流程1 接收查询语句: 用户通过客户端或编程语言框架里面的驱动模块,经由专门的通信协议,向MySQL服务器发送SQL查询语句。 如果是mysql服务端,这里的通信协议端口是 3306 数据库服务端内部的连接器接收查询请求后,首先到本地的缓存记录中检索信息 如果有信息,则直接返回查询结果 如果没有信息,则将信息直接传递给后端的数据库解析器来进行处理2 词法分析和语法分析: MySQL服务器首先会对接收到的查询语句进行词法分析,将其分解成一系列的词法单元。 接着,进行语法分析,检查这些词法单元是否符合SQL语法规则。如果语法错误,MySQL会立即返回错误信息。3 语义分析: 在语法分析之后,MySQL会进行语义分析,检查查询语句中的表、列、函数等是否存在,以及用户是否有足够的权限执行该查询。 语义分析还会检查查询语句中的数据类型是否匹配,以及是否存在违反数据库完整性的约束。4 查询优化: MySQL的查询优化器会对查询语句进行优化,决定最优的执行查询计划 -- 也就是怎么走会效率更快。 优化过程包括选择最佳的访问路径、索引、连接顺序等,以最小化查询的执行时间和资源消耗。 优化器还会考虑统计信息,如表的行数、索引的分布等,以做出更明智的决策。5 查询执行: 优化后的查询计划被传递给执行器进行执行。执行器根据查询计划访问存储引擎,获取数据。 存储引擎将文件系统里面的数据库文件数据,加载到内存,然后在内存中做一次聚合 然后,临时放到查询缓存中,便于下次遇到相同的查询语句重复过来。 在执行过程中,MySQL可能会使用缓存来加速查询的执行。从MySQL 8.0开始,查询缓存已被移除。6 结果集返回: 执行器将查询结果集返回给客户端。结果集可以包含零行或多行数据,具体取决于查询的内容。 如果查询涉及聚合函数(如SUM、AVG等)或分组操作(如GROUP BY),执行器还会在返回结果之前对这些数据进行相应的处理。7 错误处理和日志记录: 如果在执行过程中遇到任何错误(如权限不足、表不存在等),MySQL会返回相应的错误信息给客户端。 同时,MySQL还会记录查询的执行日志,以便进行性能分析和故障排查。主要区别:MySQL 5.7 及之前版本查询缓存常被使用,但存在一些问题(如命中率低、维护开销大)。 MySQL 8.0 弃用查询缓存,避免相关开销。-- 查询2023年每个城市中,购买了“电子产品”类别商品,且订单总金额大于1000元的客户信息 -- 以及他们对应的订单信息和购买的商品明细 SELECT c.customer_name, c.customer_city, o.order_id, o.order_date, o.total_amount, p.product_name, oi.quantity, oi.unit_price FROM customers c -- 连接orders表,获取客户的订单信息 JOIN orders o ON c.customer_id = o.customer_id -- 连接order_items表,获取订单中的商品明细信息 JOIN order_items oi ON o.order_id = oi.order_id -- 连接products表,获取商品的名称等信息 JOIN products p ON oi.product_id = p.product_id -- 连接categories表,获取商品所属类别信息 JOIN categories cat ON p.category_id = cat.category_id WHERE -- 筛选出2023年的订单 YEAR(o.order_date) = 2023 AND -- 筛选出商品类别为“电子产品”的记录 cat.category_name = '电子产品' AND -- 筛选出订单总金额大于1000元的订单 o.total_amount > 1000 GROUP BY -- 按照客户姓名、城市、订单ID、订单日期、订单总金额、商品名称进行分组 c.customer_name, c.customer_city, o.order_id, o.order_date, o.total_amount, p.product_name ORDER BY -- 按照客户所在城市升序、订单总金额降序排序 c.customer_city ASC, o.total_amount DESC;对于这个大的流程来说,专用协议之后的功能,全部由数据库软件来实现,而我们需要做的是前面的各种sql语句的编写。2.Mysql安装方式mysql主流的四种安装方式安装方式说明包管理器进行安装配置好mysql仓库员,用包管理器进行在线安装二进制包本地安装下载已编译完成的压缩包,展开至特定路径,并经过简单配置后即可使用源码编译安装1下载指定版本源码在本地进行编译安装源码编译安装2下载指定版本源码【已编译完毕生成可执行文件】在本地进行环境初始化即可3.关于软件mysql和mariadb安装文件前后对比注意:两个环境安装不同的mysql和mariadb 配置文件的名称和位置都不一样 但是,配置内容,基本上都是一样。 mysql 是 多线程工作模式MysqlRockyubuntu软件名mysql-servermysql-server服务名mysqld.servicemysql.service入口文件/etc/my.cnf/etc/mysql/my.cnf配置目录/etc/my.cnf.d/etc/mysql/mysql.conf.d服务配置/etc/my.cnf.d/mysql-server.cnf/etc/mysql/mysql.conf.d/mysqld.cnf端口:::3306 :::33060127.0.0.1:3306 127.0.0.1:33060MariadbRockyubuntu软件名mariadb-servermariadb-server服务名mariadb.servicemariadb.service入口文件/etc/my.cnf/etc/mysql/my.cnf配置目录/etc/my.cnf.d/etc/mysql/mariadb.conf.d服务配置/etc/my.cnf.d/mariadb-server.cnf/etc/mysql/mariadb.conf.d/50-server.cnf端口:::3306127.0.0.1:33064.包管理进行安装4.1.光盘镜像Rocky9 系列光盘镜像自带 mysql-server 8.0 和 mariadb-server 10.3挂载镜像 [root@Rocky9-12 ~]# mount /dev/cdrom /opt/ mount: /opt: WARNING: source write-protected, mounted read-only. [root@Rocky9-12 ~]# ls /opt/ AppStream BaseOS EFI images isolinux LICENSE media.repo 查看数据库软件 [root@Rocky9-12 ~]# ls /opt/AppStream/Packages/m/mysql-ser* /opt/AppStream/Packages/m/mysql-server-8.0.36-1.el9_3.x86_64.rpm [root@Rocky9-12 ~]# ls /opt/AppStream/Packages/m/mariadb-server-1* /opt/AppStream/Packages/m/mariadb-server-10.11.6-1.module+el9.4.0+20012+a68bdff7.x86_64.rpm /opt/AppStream/Packages/m/mariadb-server-10.5.22-1.el9_2.x86_64.rpm其他信息:CentOS7 系列光盘镜像自带 mariadb-server 5.5 CentOS6 系列光盘镜像自带 mysql-server 5.1[21:37:13 root@centos7 ~]# mount /dev/cdrom /opt mount: /dev/sr0 is write-protected, mounting read-only [21:37:27 root@centos7 ~]# ls /opt/ CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7 EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL 查看数据库软件 [21:38:19 root@centos7 ~]# ls /opt/Packages/mariadb-server-5.5.68-1.el7.x86_64.rpm /opt/Packages/mariadb-server-5.5.68-1.el7.x86_64.rpm4.2.官方yum源源配置地址mariadb 官方源配置页面https://mariadb.org/download/?t=repo-configmysql 官方源配置页面https://dev.mysql.com/downloads阿里云 mysql 源配置页面https://mirrors.aliyun.com/mysql/阿里云 mariadb 源配置页面https://mirrors.aliyun.com/mariadb/清华 mysql 源配置页面https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/清华 mariadb 源配置页面https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/[root@Rocky9-12 ~]# yum list "mysql" mysql.x86_64 8.0.41-2.el9_5 [root@Rocky9-12 ~]# yum list "mariadb" mariadb.x86_64 3:10.5.27-1.el9_5 4.3.mariadb源如何获取最新的mariadb软件源,参考mariadb 官方源配置页面,选择版本和系统发行版本 注意:目前版本最新为 11.8 官网:https://mariadb.org/download/4.4.mysql源如何获取最新的mysql软件源,参考mysql官方源配置页面 官网:http://dev.mysql.com/downloads/点击需要使用功能的源类型,然后下载对应的包就可以了 MySQL Community Downloads 即 MySQL 社区版下载General Availability (GA) Releases:意思是 “通用版本发布” 通常指软件经过全面测试、达到稳定状态,可供广大用户在生产环境等正式场景使用的版本,按钮为橙色文字。 Archives:意为 “存档” 这里一般指软件过往旧版本的集合,供有特定需求(如兼容性需求)的用户下载使用,按钮为蓝色文字。apt源中版本最新版本是8.34-1yum源版本最新版本是8.0.4x版本结果显示: 社区版,在 APT 源中,目前主流的是8版本 在其他的下载页面,虽然存在9.1.0版本,但是LTS依然是8版本5.Rocky9中安装mysql8.05.1.软件信息获取mysql软件源 [root@Rocky9-12 ~]# yum list mysql mysql-server mysql.x86_64 8.0.41-2.el9_5 appstream mysql-server.x86_64 8.0.41-2.el9_5 appstream获取mariadb的软件源 [root@Rocky9-15 ~]# yum list mariadb mariadb-server mariadb.x86_64 3:10.5.27-1.el9_5 appstream mariadb-server.x86_64 3:10.5.27-1.el9_5 appstream5.2.安装软件安装 mysql-server,会自动安装客户端包【安装客户端不会安装服务端软件】[root@Rocky9-12 ~]# yum install -y mysql-server服务状态 [root@Rocky9-12 ~]# systemctl status mysqld.service ○ mysqld.service - MySQL 8.0 database server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; preset: disabled) Active: inactive (dead)启动服务 [root@Rocky9-12 ~]# systemctl enable --now mysqld Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.再次查看 [root@Rocky9-12 ~]# systemctl status mysqld.service ● mysqld.service - MySQL 8.0 database server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; preset: disabled) Active: active (running) 5.3.环境查看检测mysql的进程状态多线程模式 [root@Rocky9-12 ~]# pstree | grep mysql |-mysqld---36*[{mysqld}]检测其他信息自动创建的账户 [root@Rocky9-12 ~]# getent passwd mysql mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin查看mysql真正的家目录 [root@Rocky9-12 ~]# ll /var/lib/mysql total 91604 -rw-r----- 1 mysql mysql 56 May 7 21:58 auto.cnf -rw-r----- 1 mysql mysql 157 May 7 21:58 binlog.000001 -rw-r----- 1 mysql mysql 16 May 7 21:58 binlog.index -rw------- 1 mysql mysql 1705 May 7 21:58 ca-key.pem -rw-r--r-- 1 mysql mysql 1112 May 7 21:58 ca.pem -rw-r--r-- 1 mysql mysql 1112 May 7 21:58 client-cert.pem -rw------- 1 mysql mysql 1705 May 7 21:58 client-key.pem -rw-r----- 1 mysql mysql 196608 May 7 22:00 '#ib_16384_0.dblwr' -rw-r----- 1 mysql mysql 8585216 May 7 21:58 '#ib_16384_1.dblwr' -rw-r----- 1 mysql mysql 6238 May 7 21:58 ib_buffer_pool -rw-r----- 1 mysql mysql 12582912 May 7 21:58 ibdata1 -rw-r----- 1 mysql mysql 12582912 May 7 21:58 ibtmp1 drwxr-x--- 2 mysql mysql 4096 May 7 21:58 '#innodb_redo' drwxr-x--- 2 mysql mysql 187 May 7 21:58 '#innodb_temp' drwxr-x--- 2 mysql mysql 143 May 7 21:58 mysql -rw-r----- 1 mysql mysql 26214400 May 7 21:58 mysql.ibd srwxrwxrwx 1 mysql mysql 0 May 7 21:58 mysql.sock -rw------- 1 mysql mysql 5 May 7 21:58 mysql.sock.lock -rw-r--r-- 1 mysql mysql 7 May 7 21:58 mysql_upgrade_info srwxrwxrwx 1 mysql mysql 0 May 7 21:58 mysqlx.sock -rw------- 1 mysql mysql 5 May 7 21:58 mysqlx.sock.lock drwxr-x--- 2 mysql mysql 8192 May 7 21:58 performance_schema -rw------- 1 mysql mysql 1705 May 7 21:58 private_key.pem -rw-r--r-- 1 mysql mysql 452 May 7 21:58 public_key.pem -rw-r--r-- 1 mysql mysql 1112 May 7 21:58 server-cert.pem -rw------- 1 mysql mysql 1705 May 7 21:58 server-key.pem drwxr-x--- 2 mysql mysql 28 May 7 21:58 sys -rw-r----- 1 mysql mysql 16777216 May 7 22:00 undo_001 -rw-r----- 1 mysql mysql 16777216 May 7 22:00 undo_002查看数据库的数据文件 [root@Rocky9-12 ~]# ls /var/lib/mysql/mysql general_log_213.sdi general_log.CSM general_log.CSV slow_log_214.sdi slow_log.CSM slow_log.CSV 注意:因为这些文件,不是普通的文件系统,它是数据库专用的文件,只能通过数据库的统一接口到这些文件中,进行数据的查找。查看监听端口,默认3306,33060 是8.0版本中的特性 [root@Rocky9-12 ~]# ss -tnulp | grep mysql tcp LISTEN 0 151 *:3306 *:* users:(("mysqld",pid=2520,fd=24)) tcp LISTEN 0 70 *:33060 *:* users:(("mysqld",pid=2520,fd=21)) 注意:X Protocol 是一种新的通信协议,旨在提供更高效、灵活的数据交互方式,让客户端与服务器通信更顺畅。 在 MySQL 8.0 中,33060 端口是 X Protocol 协议的端口 。5.4.登录测试客户端连接: 默认用户名 root,默认密码为空连接到数据库里面 [root@Rocky9-12 ~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.41 Source distribution mysql>查看当前数据库的版本信息 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.41 | +-----------+ 1 row in set (0.00 sec) mysql> exit; # 退出数据库的连接客户端连接: 直接使用用户和密码 [root@Rocky9-12 ~]# mysql -uroot -p -P3306 Enter password: # 因为没有密码,所以这里直接Enter即可 Server version: 8.0.41 Source distribution mysql>mysql> \s # 显示当前 MySQL 服务器会话状态的快捷命令 -------------- mysql Ver 8.0.41 for Linux on x86_64 (Source distribution) Connection id: 9 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 8.0.41 Source distribution Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /var/lib/mysql/mysql.sock Binary data as: Hexadecimal Uptime: 8 min 35 sec Threads: 2 Questions: 8 Slow queries: 0 Opens: 120 Flush tables: 3 Open tables: 36 Queries per second avg: 0.015 --------------6.在Rocky9中安装mariadb6.1.软件安装查看mariadb软件 [root@Rocky9-15 ~]# yum list mariadb mariadb.x86_64 3:10.5.27-1.el9_5 appstream安装软件 -- 会自动安装客户端 [root@Rocky9-15 ~]# yum -y install mariadb-server启动服务 [root@Rocky9-15 ~]# systemctl enable --now mariadb Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.查看状态 [root@Rocky9-15 ~]# systemctl status mariadb ● mariadb.service - MariaDB 10.5 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: disabled) Active: active (running)监听端口 [root@Rocky9-15 ~]# ss -tunlp | grep 3306 tcp LISTEN 0 80 *:3306 *:* users:(("mariadbd",pid=3169,fd=19)) # 服务名字变成了 mariadb 注意: mariadb里面没有33060的端口 MariaDB 的设计初衷是保持与 MySQL 高度兼容,主要继承 MySQL 5.5 及之前版本的特性。 它专注于提供稳定、性能良好且与旧版 MySQL 兼容的数据库服务,面向大多数传统数据库应用场景,这些场景不需 要通过 33060 端口使用 X Protocol。多线程状态 [root@Rocky9-15 ~]# pstree | grep maria |-mariadbd---7*[{mariadbd}]查看家目录文件结构 [root@Rocky9-15 ~]# ll /var/lib/mysql/ total 122920 -rw-rw---- 1 mysql mysql 24576 May 7 22:10 aria_log.00000001 -rw-rw---- 1 mysql mysql 52 May 7 22:10 aria_log_control -rw-rw---- 1 mysql mysql 972 May 7 22:10 ib_buffer_pool -rw-rw---- 1 mysql mysql 12582912 May 7 22:10 ibdata1 -rw-rw---- 1 mysql mysql 100663296 May 7 22:10 ib_logfile0 -rw-rw---- 1 mysql mysql 12582912 May 7 22:10 ibtmp1 -rw-rw---- 1 mysql mysql 0 May 7 22:10 multi-master.info drwx------ 2 mysql mysql 4096 May 7 22:10 mysql srwxrwxrwx 1 mysql mysql 0 May 7 22:10 mysql.sock -rw-rw---- 1 mysql mysql 16 May 7 22:10 mysql_upgrade_info drwx------ 2 mysql mysql 20 May 7 22:10 performance_schema检查客户端连接命令 -- 本质上是 mariadb文件 [root@Rocky9-15 ~]# ll /usr/sbin/mysqld lrwxrwxrwx 1 root root 19 Feb 4 19:21 /usr/sbin/mysqld -> /usr/libexec/mysqld [root@Rocky9-15 ~]# ll /usr/libexec/mysqld lrwxrwxrwx 1 root root 8 Feb 4 19:21 /usr/libexec/mysqld -> mariadbd6.2.连接登录客户端连接 [root@Rocky9-15 ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 10.5.27-MariaDB MariaDB Server MariaDB [(none)]> select version(); +-----------------+ | version() | +-----------------+ | 10.5.27-MariaDB | +-----------------+ 1 row in set (0.000 sec) MariaDB [(none)]> exit Bye7.Ubuntu24 安装mysql8.07.1.安装软件安装 mysql-server,会自动安装客户端包【安装客户端不会安装服务端软件】 [root@ubuntu24-13:~]# apt install mysql-server -y再次查看状态信息 [root@ubuntu24-13:~]# systemctl status mysql.service ● mysql.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled) Active: active (running) 注意:如果是第一次安装mysql-server出现服务启动不起来,而且没有提前做任何的配置,那一般情况下,是本地主机环境已经被历史残留的数据信息破坏了。检测mysql的进程状态多线程模式 [root@ubuntu24-13:~]# pstree | grep mysql |-mysqld---36*[{mysqld}] 自己创建的账户 [root@ubuntu24-13:~]# getent passwd mysql mysql:x:110:110:MySQL Server,,,:/nonexistent:/bin/false查看mysql真正的家目录 [root@ubuntu24-13:~]# ll /var/lib/mysql total 91612 -rw-r----- 1 mysql mysql 196608 May 7 22:19 '#ib_16384_0.dblwr' -rw-r----- 1 mysql mysql 8585216 May 7 22:17 '#ib_16384_1.dblwr' drwxr-x--- 2 mysql mysql 4096 May 7 22:17 '#innodb_redo'/ drwxr-x--- 2 mysql mysql 4096 May 7 22:17 '#innodb_temp'/ drwx------ 7 mysql mysql 4096 May 7 22:17 ./ drwxr-xr-x 50 root root 4096 May 7 22:17 ../ -rw-r----- 1 mysql mysql 56 May 7 22:17 auto.cnf -rw-r----- 1 mysql mysql 180 May 7 22:17 binlog.000001 -rw-r----- 1 mysql mysql 404 May 7 22:17 binlog.000002 -rw-r----- 1 mysql mysql 157 May 7 22:17 binlog.000003 -rw-r----- 1 mysql mysql 48 May 7 22:17 binlog.index -rw------- 1 mysql mysql 1705 May 7 22:17 ca-key.pem -rw-r--r-- 1 mysql mysql 1112 May 7 22:17 ca.pem -rw-r--r-- 1 mysql mysql 1112 May 7 22:17 client-cert.pem -rw------- 1 mysql mysql 1705 May 7 22:17 client-key.pem -rw-r--r-- 1 root root 0 May 7 22:17 debian-5.7.flag -rw-r----- 1 mysql mysql 3425 May 7 22:17 ib_buffer_pool -rw-r----- 1 mysql mysql 12582912 May 7 22:17 ibdata1 -rw-r----- 1 mysql mysql 12582912 May 7 22:17 ibtmp1 drwxr-x--- 2 mysql mysql 4096 May 7 22:17 mysql/ -rw-r----- 1 mysql mysql 26214400 May 7 22:17 mysql.ibd drwxr-x--- 2 mysql mysql 4096 May 7 22:17 performance_schema/ -rw------- 1 mysql mysql 1709 May 7 22:17 private_key.pem -rw-r--r-- 1 mysql mysql 452 May 7 22:17 public_key.pem -rw-r--r-- 1 mysql mysql 1112 May 7 22:17 server-cert.pem -rw------- 1 mysql mysql 1705 May 7 22:17 server-key.pem drwxr-x--- 2 mysql mysql 4096 May 7 22:17 sys/ -rw-r----- 1 mysql mysql 5 May 7 22:17 ubuntu24-13.pid -rw-r----- 1 mysql mysql 16777216 May 7 22:19 undo_001 -rw-r----- 1 mysql mysql 16777216 May 7 22:19 undo_002查看数据库的数据文件 [root@ubuntu24-13:~]# ls /var/lib/mysql/mysql general_log.CSM general_log.CSV general_log_213.sdi slow_log.CSM slow_log.CSV slow_log_214.sdi 注意:因为这些文件,不是普通的文件系统,它是数据库专用的文件,只能通过数据库的统一接口到这些文件中,进行数据的查找。查看监听端口,默认3306,33060 是8.0版本中的特性 [root@ubuntu24-13:~]# netstat -tunlp | grep mysql tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 8524/mysqld tcp 0 0 127.0.0.1:33060 0.0.0.0:* LISTEN 8524/mysqld 结果显示:默认监听的是本地主机的IP地址7.2.登录连接客户端连接: 默认用户名 root,默认密码为空连接到数据库里面 [root@ubuntu24-13:~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.42-0ubuntu0.24.04.1 (Ubuntu) # 查看当前数据库的版本信息 mysql> select version(); +-------------------------+ | version() | +-------------------------+ | 8.0.42-0ubuntu0.24.04.1 | +-------------------------+ 1 row in set (0.00 sec) mysql> exit # 退出数据库的连接 Bye客户端连接: 直接使用用户和密码 [root@ubuntu24-13:~]# mysql -uroot -p Enter password: # 因为没有密码,所以这里直接Enter即可,也可以随便乱写密码 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.42-0ubuntu0.24.04.1 (Ubuntu) Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> \s # 显示当前 MySQL 服务器会话状态的快捷命令 -------------- mysql Ver 8.0.42-0ubuntu0.24.04.1 for Linux on x86_64 ((Ubuntu)) Connection id: 9 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 8.0.42-0ubuntu0.24.04.1 (Ubuntu) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /var/run/mysqld/mysqld.sock Binary data as: Hexadecimal Uptime: 7 min 11 sec Threads: 2 Questions: 8 Slow queries: 0 Opens: 119 Flush tables: 3 Open tables: 38 Queries per second avg: 0.018 --------------8.Ubuntu24中安装mysql8.0---二进制包安装8.1.如何获取二进制包文件传统的二进制包安装需要进行三步:configure --- make --- make install 而mysql的二进制包是指己经编译完成【也就是说,make已经做过了】,以压缩包提供下载的文件,下载到本 地之后释放到自定义目录,再进行配置即可。二进制包的下载位置 -- Download Archives 官网:https://dev.mysql.com/downloads选择 Download Archives选择第一个 Mysql Community Server选择第一个,然后点击右侧的下载就可以了 https://downloads.mysql.com/archives/get/p/23/file/mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz以同样的逻辑下载mysql的最新版本9.2.0选择第一个,然后点击右侧的下载就可以了 https://downloads.mysql.com/archives/get/p/23/file/mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz8.2.基础环境安装依赖 [root@ubuntu24-16:~]# apt -y install libaio-dev numactl libnuma-dev libncurses-dev注意:ubuntu24系统没有libaio1的包,需要单独去下载安装 curl -O http://launchpadlibrarian.net/646633572/libaio1_0.3.113-4_amd64.deb dpkg -i libaio1_0.3.113-4_amd64.deb8.3.用户环境[root@ubuntu24-16:~]# groupadd -r mysql [root@ubuntu24-16:~]# useradd -r -g mysql -s /sbin/nologin mysql8.4.软件安装获取软件 [root@ubuntu24-16:~]# mkdir -p /data/softs [root@ubuntu24-16:~]# cd /data/softs [root@ubuntu24-16:softs]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz解压至指定目录,这个目录只能写 /usr/local/ [root@ubuntu24-16:softs]# mkdir /usr/local/mysql [root@ubuntu24-16:softs]# tar xf mysql-8.4.0-linux-glibc2.28-x86_64.tar.xz [root@ubuntu24-16:softs]# mv mysql-8.4.0-linux-glibc2.28-x86_64 /usr/local/mysql查看文件 [root@ubuntu24-16:softs]# ls /usr/local/mysql LICENSE README bin docs include lib man share support-files [root@ubuntu24-16:softs]# ls /usr/local/mysql/bin/ ibd2sdi myisamchk mysql_config mysql_tzinfo_to_sql mysqld mysqldump mysqlslap innochecksum myisamlog mysql_config_editor mysqladmin mysqld-debug mysqldumpslow perror my_print_defaults myisampack mysql_migrate_keyring mysqlbinlog mysqld_multi mysqlimport myisam_ftdump mysql mysql_secure_installation mysqlcheck mysqld_safe mysqlshow8.5.环境变量设定-可选创建环境变量 [root@ubuntu24-16:softs]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@ubuntu24-16:softs]# source /etc/profile.d/mysql.sh [root@ubuntu24-16:softs]# echo $PATH /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin8.6.环境配置创建主配置文件 [root@ubuntu24-16:~]# mkdir /usr/local/mysql/etc [root@ubuntu24-16:~]# vim /usr/local/mysql/etc/my.cnf [root@ubuntu24-16:~]# cat /usr/local/mysql/etc/my.cnf [mysql] port = 3306 socket = /usr/local/mysql/data/mysql.sock [mysqld] port = 3306 mysqlx_port = 33060 mysqlx_socket = /usr/local/mysql/data/mysqlx.sock basedir = /usr/local/mysql datadir = /usr/local/mysql/data socket = /usr/local/mysql/data/mysql.sock pid-file = /usr/local/mysql/data/mysqld.pid log-error = /usr/local/mysql/log/error.log注意: 大家在互联网上经常看到的认证属性已经被移除了,但是,该密码插件选项依然很管用。 甚至默认的密码插件在集群操作的时候,不能用。 default-authentication-plugin = mysql_native_passwordmysqlx: 传统的 MySQL 客户端 - 服务器通信主要基于经典的 SQL 接口。随着现代应用开发需求的变化,如对JSON 数据类型的更好支持、更高效的文档存储和检索、以及更适合现代编程语言的 API 等,MySQL 引入了X DevAPI。而 mysqlx 就是与这个新 API 相关的重要部分,它提供了新的通信协议和客户端库,使得开发 者可以更方便地使用 MySQL 数据库。 使用 mysqlx 命令行客户端来测试和执行基于 X DevAPI 的操作。例如,通过该客户端可以使用新的语法进行数据库查询和操作。注意:配置文件中涉及到的配置目录,必须存在,否则无法运行创建数据目录创建依赖目录 [root@ubuntu24-16:~]# mkdir /usr/local/mysql/{data,log} 更改文件属性 [root@ubuntu24-16:~]# chown -R mysql:mysql /usr/local/mysql如果我们采用的是软连接的方式,上面赋权的时候,命令应该是: chown -R mysql:mysql /usr/local/mysql* 注意:mysql后面有一个 *,如果不加,会导致很多的权限问题,比如 2024-12-08T06:32:09.439274Z 0 [ERROR] [MY-010187] [Server] Could not open file '/data/server/mysql/logs/mysql.log' for error logging: Permission denied 2024-12-08T06:32:09.439380Z 0 [ERROR] [MY-013236] [Server] The designated data directory /data/server/mysql/data/ is unusable. You can remove all files that the server added to it. 2024-12-08T06:32:09.439412Z 0 [ERROR] [MY-010119] [Server] Aborting8.7.环境初始化8.7.1.密码初始化初始化,本地root用户 - 使用密码如果使用 --initialize 选项会生成随机密码,要去 /data/mysql/mysql.log中查看 如果使用 --initialize-insecure -选项会生成空密码[root@ubuntu24-16:~]# cd /usr/local/mysql/ [root@ubuntu24-16:mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data确认登录密码 [root@ubuntu24-16:mysql]# grep 'temporary password' /usr/local/mysql/log/error.log 2025-05-07T14:55:15.598967Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: god&ia6haBrC8.7.2.空密码初始化初始化,本地root用户 - 使用空密码清理历史文件 [root@ubuntu24-16:~]# rm -rf /usr/local/mysql/data/* [root@ubuntu24-16:~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data确认登录密码 [root@ubuntu24-16:~]# tail -f /usr/local/mysql/log/error.log ...... 2025-05-07T14:58:05.616373Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. 2025-05-07T14:58:07.889872Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end. 结果提示:使用的是空密码确认文件 [root@ubuntu24-16:~]# ls /usr/local/mysql/data/ '#ib_16384_0.dblwr' auto.cnf client-key.pem mysql.ibd public_key.pem undo_001 '#ib_16384_1.dblwr' ca-key.pem ib_buffer_pool mysql_upgrade_history server-cert.pem undo_002 '#innodb_redo' ca.pem ibdata1 performance_schema server-key.pem '#innodb_temp' client-cert.pem mysql private_key.pem sys8.8.服务脚本定制启动脚本该脚本不是systemd风格的脚本,但是可以被 systemd兼容 [root@ubuntu24-16:~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld重载配置文件 [root@ubuntu24-16:~]# systemctl daemon-reload 启动mysqld服务 [root@ubuntu24-16:~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): mysqld.service查看自动生成的服务管理文件 [root@ubuntu24-16:~]# systemctl cat mysqld.service # /run/systemd/generator.late/mysqld.service # Automatically generated by systemd-sysv-generator [Unit] Documentation=man:systemd-sysv-generator(8) SourcePath=/etc/init.d/mysqld Description=LSB: start and stop MySQL After=network-online.target After=remote-fs.target After=ypbind.service After=nscd.service After=ldap.service After=ntpd.service After=xntpd.service Wants=network-online.target [Service] Type=forking Restart=no TimeoutSec=5min IgnoreSIGPIPE=no KillMode=process GuessMainPID=no RemainAfterExit=yes SuccessExitStatus=5 6 ExecStart=/etc/init.d/mysqld start ExecStop=/etc/init.d/mysqld stop ExecReload=/etc/init.d/mysqld reload检测服务状态 [root@ubuntu24-16:~]# systemctl status mysqld ● mysqld.service - LSB: start and stop MySQL Loaded: loaded (/etc/init.d/mysqld; generated) Active: active (running) 查看端口连接 [root@ubuntu24-16:~]# netstat -tunlp | grep mysql tcp6 0 0 :::33060 :::* LISTEN 7349/mysqld tcp6 0 0 :::3306 :::* LISTEN 7349/mysqld8.9.连接测试客户端连接[root@ubuntu24-16:~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.4.0 MySQL Community Server - GPL 查看当前的数据库版本 mysql> select version(); +-----------+ | version() | +-----------+ | 8.4.0 | +-----------+ 1 row in set (0.00 sec)修改密码 mysql> alter user root@'localhost' identified by 'Magedu'; Query OK, 0 rows affected (0.01 sec) mysql> exit Byemysql用户账号由两部分组成: 'USERNAME'@'HOST' dange@'10.0.0.100' dange@'10.0.0.%' dange@'%' 说明:HOST限制此用户可通过哪些远程主机连接mysql服务器确认修改密码效果默认情况下,无法登录了 [root@ubuntu24-16:~]# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)使用用户名和密码,可以正常登录 [root@ubuntu24-16:~]# mysql -uroot -pMagedu mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 8.4.0 MySQL Community Server - GPL8.10.定制服务管理文件cat >/usr/lib/systemd/system/mysqld.service<<EOF [Unit] Description=MySQL Community Server Documentation=mysqld.service After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID LimitNOFILE = 10000 EOF重载配置 [root@ubuntu24-16:~]# systemctl daemon-reload 启动服务 [root@ubuntu24-16:~]# systemctl start mysqld检测效果 [root@ubuntu24-16:~]# systemctl start mysqld.service [root@ubuntu24-16:~]# netstat -tunlp | grep 3306 tcp6 0 0 :::33060 :::* LISTEN 8503/mysqld tcp6 0 0 :::3306 :::* LISTEN 8503/mysqld [root@ubuntu24-16:~]# systemctl status mysqld ● mysqld.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; preset: enabled) Active: active (running) since Thu 2025-05-08 10:07:35 CST; 21s ago Main PID: 8503 (mysqld) Tasks: 36 (limit: 4552) Memory: 429.7M (peak: 443.2M) CPU: 2.465s CGroup: /system.slice/mysqld.service └─8503 /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf May 08 10:07:35 ubuntu24-16 systemd[1]: Started mysqld.service - MySQL Community Server.9.Ubuntu中安装mysql9.2---二进制包安装9.1.基础环境安装依赖 [root@ubuntu24-13:~]# apt -y install libaio-dev numactl libnuma-dev libncurses-dev注意:ubuntu24系统没有libaio1的包,需要单独去下载安装 [root@ubuntu24-13:~]# curl -O http://launchpadlibrarian.net/646633572/libaio1_0.3.113-4_amd64.deb [root@ubuntu24-13:~]# dpkg -i libaio1_0.3.113-4_amd64.deb 否则环境初始化的时候,会发生如下报错 root@ubuntu24:mysql# bin/mysqld --initialize --user=mysql -- basedir=/usr/local/mysql --datadir=/usr/local/mysql/data bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory9.2.用户环境创建组和用户 [root@ubuntu24-13:~]# groupadd -r mysql [root@ubuntu24-13:~]# useradd -r -g mysql -s /sbin/nologin mysql9.3.软件环境获取软件 [root@ubuntu24-13:~]# mkdir -p /data/softs [root@ubuntu24-13:~]# cd /data/softs [root@ubuntu24-13:softs]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz解压至指定目录,这个目录只能写 /usr/local/ [root@ubuntu24-13:softs]# ls mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz [root@ubuntu24-13:softs]# tar xf mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz [root@ubuntu24-13:softs]# mv mysql-9.2.0-linux-glibc2.28-x86_64 /usr/local/mysql查看文件 [root@ubuntu24-13:softs]# ls /usr/local/mysql LICENSE README bin docs include lib man share support-files [root@ubuntu24-13:softs]# ls /usr/local/mysql/bin/ ibd2sdi myisamchk mysql_config mysql_tzinfo_to_sql mysqld mysqldump mysqlslap innochecksum myisamlog mysql_config_editor mysqladmin mysqld-debug mysqldumpslow perror my_print_defaults myisampack mysql_migrate_keyring mysqlbinlog mysqld_multi mysqlimport myisam_ftdump mysql mysql_secure_installation mysqlcheck mysqld_safe mysqlshow9.4.环境变量设定-可选创建环境变量 [root@ubuntu24-13:~]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@ubuntu24-13:~]# source /etc/profile.d/mysql.sh [root@ubuntu24-13:~]# echo $PATH /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin9.5.环境配置创建主配置文件 [root@ubuntu24-13:~]# mkdir /usr/local/mysql/etc [root@ubuntu24-13:~]# vim /usr/local/mysql/etc/my.cnf [root@ubuntu24-13:~]# cat /usr/local/mysql/etc/my.cnf [mysql] port = 3306 socket = /usr/local/mysql/data/mysql.sock [mysqld] port = 3306 mysqlx_port = 33060 mysqlx_socket = /usr/local/mysql/data/mysqlx.sock basedir = /usr/local/mysql datadir = /usr/local/mysql/data socket = /usr/local/mysql/data/mysql.sock pid-file = /usr/local/mysql/data/mysqld.pid log-error = /usr/local/mysql/log/error.log注意: 大家在互联网上经常看到的认证属性已经被移除了,但是,该密码插件选项依然很管用。 甚至默认的密码插件在集群操作的时候,不能用。 default-authentication-plugin = mysql_native_password注意:配置文件中涉及到的配置目录,必须存在,否则无法运行创建数据目录创建依赖目录 [root@ubuntu24-13:~]# mkdir /usr/local/mysql/{data,log} 更改文件属性 [root@ubuntu24-13:~]# chown -R mysql:mysql /usr/local/mysql/如果我们采用的是软连接的方式,上面赋权的时候,命令应该是: chown -R mysql:mysql /usr/local/mysql* 注意:mysql后面有一个 *,如果不加,会导致很多的权限问题,比如 2025-05-08T06:32:09.439274Z 0 [ERROR] [MY-010187] [Server] Could not open file '/data/server/mysql/logs/mysql.log' for error logging: Permission denied 2025-05-08T06:32:09.439380Z 0 [ERROR] [MY-013236] [Server] The designated data directory /data/server/mysql/data/ is unusable. You can remove all files that the server added to it. 2025-05-08T06:32:09.439412Z 0 [ERROR] [MY-010119] [Server] Aborting9.6.环境初始化9.6.1.密码初始化初始化,本地root用户 - 使用密码如果使用 --initialize 选项会生成随机密码,要去 /data/mysql/mysql.log中查看 如果使用 --initialize-insecure -选项会生成空密码[root@ubuntu24-13:~]# cd /usr/local/mysql/ [root@ubuntu24-13:mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data确认登录密码 [root@ubuntu24-13:mysql]# grep 'temporary password' /usr/local/mysql/log/error.log 2025-05-08T02:27:47.810610Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: msgQ:*jwk1Kb9.6.2.空密码初始化初始化,本地root用户 - 使用空密码清理历史文件 [root@ubuntu24-13:mysql]# rm -rf /usr/local/mysql/data/* [root@ubuntu24-13:mysql]# bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data确认登录密码 [root@ubuntu24-13:mysql]# tail -f /usr/local/mysql/log/error.log ...... 2025-05-08T02:30:16.497848Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. 2025-05-08T02:30:18.762028Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end. 结果提示:使用的是空密码确认文件 [root@ubuntu24-13:~]# ls /usr/local/mysql/data/ | xargs -n 3 printf "%-30s %-30s %-30s\n" #ib_16384_0.dblwr #ib_16384_1.dblwr #innodb_redo #innodb_temp auto.cnf ca-key.pem ca.pem client-cert.pem client-key.pem ib_buffer_pool ibdata1 mysql mysql.ibd mysql_upgrade_history performance_schema private_key.pem public_key.pem server-cert.pem server-key.pem sys undo_001 undo_0029.7.服务脚本定制启动脚本该脚本不是systemd风格的脚本,但是可以被 systemd兼容 [root@ubuntu24-13:~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 重载配置文件 [root@ubuntu24-13:~]# systemctl daemon-reload 启动mysqld服务 [root@ubuntu24-13:~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): mysqld.service.查看自动生成的服务管理文件 [root@ubuntu24-13:~]# systemctl cat mysqld.service # /run/systemd/generator.late/mysqld.service # Automatically generated by systemd-sysv-generator [Unit] Documentation=man:systemd-sysv-generator(8) SourcePath=/etc/init.d/mysqld Description=LSB: start and stop MySQL After=network-online.target After=remote-fs.target After=ypbind.service After=nscd.service After=ldap.service After=ntpd.service After=xntpd.service Wants=network-online.target [Service] Type=forking Restart=no TimeoutSec=5min IgnoreSIGPIPE=no KillMode=process GuessMainPID=no RemainAfterExit=yes SuccessExitStatus=5 6 ExecStart=/etc/init.d/mysqld start ExecStop=/etc/init.d/mysqld stop ExecReload=/etc/init.d/mysqld reload检测服务状态 [root@ubuntu24-13:~]# systemctl status mysqld.service ● mysqld.service - LSB: start and stop MySQL Loaded: loaded (/etc/init.d/mysqld; generated) Active: active (running) 查看端口连接 [root@ubuntu24-13:~]# netstat -tunlp | grep mysql tcp6 0 0 :::33060 :::* LISTEN 8114/mysqld tcp6 0 0 :::3306 :::* LISTEN 8114/mysqld9.8.连接测试客户端连接 [root@ubuntu24-13:~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 9.2.0 MySQL Community Server - GPL Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>查看当前的数据库版本 mysql> select version(); +-----------+ | version() | +-----------+ | 9.2.0 | +-----------+ 1 row in set (0.00 sec) 修改密码 mysql> alter user root@'localhost' identified by 'Magedu'; Query OK, 0 rows affected (0.01 sec) mysql> exit Bye确认修改密码效果默认情况下,无法登录了 [root@ubuntu24-13:~]# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 使用用户名和密码,可以正常登录 [root@ubuntu24-13:~]# mysql -uroot -pMagedu mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 9.2.0 MySQL Community Server - GPL Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>9.9.定制服务管理文件cat >/usr/lib/systemd/system/mysqld.service<<EOF [Unit] Description=MySQL Community Server Documentation=mysqld.service After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID LimitNOFILE = 10000 EOF重载配置 [root@ubuntu24-13:~]# systemctl daemon-reload 启动服务 [root@ubuntu24-13:~]# systemctl start mysqld 查看端口情况 [root@ubuntu24-13:~]# netstat -tunlp | grep 3306 tcp6 0 0 :::33060 :::* LISTEN 8114/mysqld tcp6 0 0 :::3306 :::* LISTEN 8114/mysqld查看服务状态信息 [root@ubuntu24-13:~]# systemctl status mysqld.service ● mysqld.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; preset: enabled) Active: active (running) 10.Rocky9中安装mysql8.0---二进制包安装10.1.基础环境安装依赖 [root@Rocky9-12 ~]# yum -y install libaio numactl-libs ncurses-compat-libs10.2.用户环境创建组和用户 [root@Rocky9-12 ~]# groupadd -r mysql [root@Rocky9-12 ~]# useradd -r -g mysql -s /sbin/nologin mysql10.3.软件环境获取软件 [root@Rocky9-12 ~]# mkdir -p /data/softs [root@Rocky9-12 ~]# cd /data/softs [root@Rocky9-12 softs]#wget https://downloads.mysql.com/archives/get/p/23/file/mysql-9.2.0-linux-glibc2.28-x86_64.tar.xzz解压至指定目录,这个目录只能写 /usr/local/ [root@Rocky9-12 softs]# ls mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz [root@Rocky9-12 softs]# tar xf mysql-9.2.0-linux-glibc2.28-x86_64.tar.xz [root@Rocky9-12 softs]# mv mysql-9.2.0-linux-glibc2.28-x86_64 /usr/local/mysql[root@Rocky9-12 softs]# ls /usr/local/mysql bin docs include lib LICENSE man README share support-files [root@Rocky9-12 softs]# ls /usr/local/mysql/bin/ | xargs -n 3 printf "%-30s %-30s %-30s\n" ibd2sdi innochecksum myisamchk myisam_ftdump myisamlog myisampack my_print_defaults mysql mysqladmin mysqlbinlog mysqlcheck mysql_config mysql_config_editor mysqld mysqld-debug mysqld_multi mysqld_safe mysqldump mysqldumpslow mysqlimport mysql_migrate_keyring mysql_secure_installation mysqlshow mysqlslap10.4.环境变量设定--可选创建环境变量 [root@Rocky9-12 ~]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@Rocky9-12 ~]# source /etc/profile.d/mysql.sh [root@Rocky9-12 ~]# echo $PATH /usr/local/mysql/bin:/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin10.5.环境配置创建主配置文件 [root@Rocky9-12 ~]# mkdir /usr/local/mysql/etc [root@Rocky9-12 ~]# vim /usr/local/mysql/etc/my.cnf [root@Rocky9-12 ~]# cat /usr/local/mysql/etc/my.cnf [mysql] port = 3306 socket = /usr/local/mysql/data/mysql.sock [mysqld] port = 3306 mysqlx_port = 33060 mysqlx_socket = /usr/local/mysql/data/mysqlx.sock basedir = /usr/local/mysql datadir = /usr/local/mysql/data socket = /usr/local/mysql/data/mysql.sock pid-file = /usr/local/mysql/data/mysqld.pid log-error = /usr/local/mysql/log/error.log创建数据目录创建依赖目录 [root@Rocky9-12 ~]# mkdir /usr/local/mysql/{data,log} 更改文件属性 [root@Rocky9-12 ~]# chown -R mysql:mysql /usr/local/mysql/10.6.环境初始化10.6.1.密码初始化[root@Rocky9-12 ~]# cd /usr/local/mysql/ [root@Rocky9-12 mysql]# bin/mysqld -initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 确认登录密码 [root@Rocky9-12 mysql]# grep 'temporary password' /usr/local/mysql/log/error.log 2025-05-08T02:59:08.664100Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: cZYk#4#T)2k710.6.2.空密码初始化初始化,本地root用户 - 使用空密码清理历史文件 [root@Rocky9-12 mysql]# rm -rf /usr/local/mysql/data/* [root@Rocky9-12 mysql]# bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data确认登录密码 [root@Rocky9-12 mysql]# tail -f /usr/local/mysql/log/error.log ...... 2025-05-08T03:00:45.561141Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. 2025-05-08T03:00:47.872042Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end. 结果显示:为空密码确认文件 [root@Rocky9-12 ~]# ls /usr/local/mysql/data/ | xargs -n 3 printf "%-30s %-30s %-30s\n" auto.cnf ca-key.pem ca.pem client-cert.pem client-key.pem #ib_16384_0.dblwr #ib_16384_1.dblwr ib_buffer_pool ibdata1 #innodb_redo #innodb_temp mysql mysql.ibd mysql_upgrade_history performance_schema private_key.pem public_key.pem server-cert.pem server-key.pem sys undo_001 undo_00210.7.定制服务管理文件cat >/usr/lib/systemd/system/mysqld.service<<EOF [Unit] Description=MySQL Community Server Documentation=mysqld.service After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID LimitNOFILE = 10000 EOF重载配置 [root@Rocky9-12 ~]# systemctl daemon-reload 启动mysql [root@Rocky9-12 ~]# systemctl start mysqld.service 查看端口连接 [root@Rocky9-12 ~]# netstat -tunlp | grep 3306 tcp6 0 0 :::33060 :::* LISTEN 2052/mysqld tcp6 0 0 :::3306 :::* LISTEN 2052/mysqld10.8.连接测试[root@Rocky9-12 ~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 9.2.0 MySQL Community Server - GPL Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 查看当前的数据库版本 mysql> select version(); +-----------+ | version() | +-----------+ | 9.2.0 | +-----------+ 1 row in set (0.00 sec)修改密码 mysql> alter user root@'localhost' identified by 'Magedu'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye默认情况下,无法登录了 [root@Rocky9-12 ~]# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)使用用户名和密码,可以正常登录 [root@Rocky9-12 ~]# mysql -uroot -pMagedu mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 9.2.0 MySQL Community Server - GPL Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye11.Rocky9-12二进制格式安装 MySQL 5.7.4411.1.基础环境安装依赖 [root@Rocky9-12 ~]# yum -y install libaio numactl-libs ncurses-compat-libs11.2.准备用户创建组和用户 [root@Rocky9-12 softs]# groupadd -r mysql [root@Rocky9-12 softs]# useradd -r -g mysql -s /sbin/nologin mysql11.3.软件环境获取软件 [root@Rocky9-12 ~]# mkdir -p /data/softs [root@Rocky9-12 ~]# cd /data/softs [root@Rocky9-12 softs]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz解压至指定目录,这个目录只能写 /usr/local/ [root@Rocky9-12 softs]# ls mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [root@Rocky9-12 softs]# tar xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [root@Rocky9-12 softs]# mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql11.4.环境变量设定-可选[root@Rocky9-12 softs]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@Rocky9-12 softs]# source /etc/profile.d/mysql.sh [root@Rocky9-12 softs]# echo $PATH /usr/local/mysql/bin:/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin11.5.环境配置创建主配置文件 [root@Rocky9-12 softs]# mkdir /usr/local/mysql/etc [root@Rocky9-12 softs]# vim /usr/local/mysql/etc/my.cnf [root@Rocky9-12 softs]# cat /usr/local/mysql/etc/my.cnf [mysqld] port=3306 socket = /usr/local/mysql/data/mysql.sock user=mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data skip_name_resolve = 1 pid-file = /usr/local/mysql/data/mysqld.pid log-error = /usr/local/mysql/log/error.log [client] socket = /usr/local/mysql/data/mysql.sock11.6.创建数据目录,建议使用逻辑卷创建依赖目录 [root@Rocky9-12 softs]# mkdir /usr/local/mysql/{data,log} 更改文件属性 [root@Rocky9-12 softs]# chown -R mysql:mysql /usr/local/mysql/11.7.环境初始化11.7.1.密码初始化[root@Rocky9-12 ~]# cd /usr/local/mysql/bin [root@Rocky9-12 bin]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data确认登录密码 [root@Rocky9-12 bin]# grep 'temporary password' /usr/local/mysql/log/error.log 2025-05-08T11:36:50.323892Z 1 [Note] A temporary password is generated for root@localhost: p>(D,oCOv1;U11.7.2.空密码初始化初始化,本地root用户 - 使用空密码清理历史文件 [root@Rocky9-12 bin]# rm -rf /usr/local/mysql/data/* [root@Rocky9-12 bin]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data确认登录密码 [root@Rocky9-12 bin]# tail /usr/local/mysql/log/error.log ...... 2025-05-08T11:38:56.196531Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. 结果显示:为空密码确认文件 [root@Rocky9-12 bin]# ls /usr/local/mysql/data/ | xargs -n 3 printf "%-30s %-30s %-30s\n" auto.cnf ca-key.pem ca.pem client-cert.pem client-key.pem ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 mysql performance_schema private_key.pem public_key.pem server-cert.pem server-key.pem sys11.8.定制服务管理文件cat >/usr/lib/systemd/system/mysqld.service<<EOF [Unit] Description=MySQL Community Server Documentation=mysqld.service After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID LimitNOFILE = 10000 EOF重载配置 [root@Rocky9-12 bin]# systemctl daemon-reload 启动mysql [root@Rocky9-12 bin]# systemctl start mysqld.service 查看端口连接 [root@Rocky9-12 bin]# netstat -tunlp | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 1935/mysqld11.9.连接测试[root@Rocky9-12 bin]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.44 MySQL Community Server (GPL) Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>查看当前数据库版本 mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.44 | +-----------+ 1 row in set (0.00 sec)修改密码 mysql> alter user root@'localhost' identified by 'Magedu'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye使用用户名和密码进行登录 [root@Rocky9-12 bin]# mysql -uroot -pMagedu mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.44 MySQL Community Server (GPL) Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye12.ubuntu24-13二进制格式安装 MySQL 5.7.4412.1.基础环境安装依赖 [root@ubuntu24-13:~]# apt -y install libaio-dev12.2.准备用户创建组和用户 [root@ubuntu24-13:~]# groupadd -r mysql [root@ubuntu24-13:~]# useradd -r -g mysql -s /sbin/nologin mysql12.3.软件环境获取软件 [root@ubuntu24-13:~]# mkdir -p /data/softs [root@ubuntu24-13:~]# cd /data/softs [root@ubuntu24-13:softs]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz解压至指定目录,这个目录只能写 /usr/local/ [root@ubuntu24-13:softs]# ls mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [root@ubuntu24-13:softs]# tar xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [root@ubuntu24-13:softs]# mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql12.4.环境变量设定-可选[root@ubuntu24-13:softs]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@ubuntu24-13:softs]# source /etc/profile.d/mysql.sh [root@ubuntu24-13:softs]# echo $PATH /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin12.5.环境配置创建主配置文件 [root@ubuntu24-13:softs]# mkdir /usr/local/mysql/etc [root@ubuntu24-13:softs]# vim /usr/local/mysql/etc/my.cnf [root@ubuntu24-13:softs]# cat /usr/local/mysql/etc/my.cnf [mysqld] port=3306 user=mysql character-set-server=utf8 collation-server=utf8_general_ci default-storage-engine=INNODB # Only allow connections from localhost bind-address = 0.0.0.0 #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" sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" max_connections=100 #skip-name-resolve socket = /usr/local/mysql/data/mysql.sock basedir = /usr/local/mysql datadir = /usr/local/mysql/data #日志 #日志时间,默认是UTC log_timestamps=SYSTEM #错误日志 log-error = /usr/local/mysql/log/error.log #开启二进制日志 log-bin=/usr/local/mysql/mysql-bin server-id=1 #开启通用查询日志 #general_log=ON #general_log_file=/usr/local/mysql/mysql-query.log #慢查询日志 slow_query_log=ON slow_query_log_file=/usr/local/var/log/mysql/mysql-slow.log long_query_time=1 #记录不使用索引查询的语句 log_queries_not_using_indexes=ON #修改密码校验等级 plugin-load-add=validate_password.so validate-password=FORCE_PLUS_PERMANENT validate_password_policy=0 validate_password_length=4 #设置导入导出的安全目录 secure_file_priv="" skip_name_resolve = 1 pid-file = /usr/local/mysql/data/mysqld.pid [mysql] default-character-set=utf8 auto-rehash [client] port=3306 socket = /usr/local/mysql/data/mysql.sock其中log_error文件需要事先创建,同时注意文件权限为mysql12.6.创建数据目录,建议使用逻辑卷创建依赖目录 [root@ubuntu24-13:softs]# mkdir /usr/local/mysql/{data,log} 更改文件属性 [root@ubuntu24-13:softs]# chown -R mysql:mysql /usr/local/mysql/12.7.环境初始化密码初始化[root@ubuntu24-13:~]# cd /usr/local/mysql/bin [root@ubuntu24-13:~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data确认登录密码 [root@ubuntu24-13:~]# grep 'temporary password' /usr/local/mysql/log/error.log 2025-05-09T13:33:21.997935+08:00 1 [Note] A temporary password is generated for root@localhost: ,?ssSMZ)z419报错: [root@ubuntu24-13:~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data /usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 解决问题: 这是由于系统安装的版本过高。通过建立软连接方式解决 查看自己系统下对应的版本,建立软连接 [root@ubuntu24-13:~]# ldd /usr/local/mysql/bin/mysqld | grep libaio libaio.so.1 => not found [root@ubuntu24-13:~]# find / -name libaio.so* /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 /usr/lib/x86_64-linux-gnu/libaio.so # 创建软链接 [root@ubuntu24-13:~]# ln -s /usr/lib/x86_64-linux-gnu/libaio.so /usr/lib/x86_64-linux-gnu/libaio.so.1 # 检查库是否存在 [root@ubuntu24-13:~]# ll /lib/x86_64-linux-gnu/libaio.so.1 lrwxrwxrwx 1 root root 35 May 9 13:25 /lib/x86_64-linux-gnu/libaio.so.1 -> /usr/lib/x86_64-linux-gnu/libaio.so # 验证动态链接器能否找到库 [root@ubuntu24-13:~]# ldd /usr/local/mysql/bin/mysqld | grep libaio libaio.so.1 => /lib/x86_64-linux-gnu/libaio.so.1 (0x00007c61e38ec000)报错: [root@ubuntu24-13:~]# mysql mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory [root@ubuntu24-13:~]# ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6.4 /usr/lib/x86_64-linux-gnu/libncurses.so.5 [root@ubuntu24-13:~]# ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6.4 /usr/lib/x86_64-linux-gnu/libtinfo.so.5确认文件 [root@ubuntu24-13:~]# ls /usr/local/mysql/data/ | xargs -n 3 printf "%-30s %-30s %-30s\n" auto.cnf ca-key.pem ca.pem client-cert.pem client-key.pem ib_buffer_pool ib_logfile0 ib_logfile1 ibdata1 mysql performance_schema private_key.pem public_key.pem server-cert.pem server-key.pem sys12.8.定制服务管理文件cat >/usr/lib/systemd/system/mysqld.service<<EOF [Unit] Description=MySQL Community Server Documentation=mysqld.service After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID LimitNOFILE = 10000 EOF重载配置 [root@ubuntu24-13:~]# systemctl daemon-reload 启动mysql [root@ubuntu24-13:~]# systemctl start mysqld.service 查看端口连接 [root@ubuntu24-13:~]# netstat -tunlp | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 1935/mysqld12.9.连接测试[root@ubuntu24-13:~]# mysql -uroot -p",?ssSMZ)z419" mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.44-log Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>查看当前数据库版本 mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.44 | +-----------+ 1 row in set (0.00 sec)修改密码并授予权限 mysql> alter user root@'localhost' identified by 'Mysql.123456'; Query OK, 0 rows affected (0.01 sec) mysql> grant all privileges on *.* to root@'%' identified by 'Mysql.123456'; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye[root@ubuntu24-13:~]# mysql -uroot -p'Mysql.123456' mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.44-log MySQL Community Server (GPL) Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye13.通用二进制格式安装 MySQL 5.6.5013.1.基础环境安装依赖 [root@Rocky9-12 ~]# yum install -y perl-Data-Dumper autoconf libaio perl-Sys-Hostname ncurses-compat-libs常见错误:缺少安装依赖,会报如下错误 [root@Rocky9-12 mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db: Sys::Hostname[root@Rocky9-12 ~]# mysql mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory [root@Rocky9-12 ~]# mysql -uroot -p mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory 在 Rocky Linux 9 系统中,可以使用 dnf 命令安装 libncurses5 相关的包。不过 Rocky Linux 9 中可能没有直接提供 libncurses.so.5 版本,你可以尝试安装兼容的 ncurses 包: sudo dnf install ncurses-compat-libs 这个包通常会包含 libncurses.so.5 或者提供其兼容的版本。13.2.准备用户创建组和用户 [root@Rocky9-12 ~]# groupadd -r mysql [root@Rocky9-12 ~]# useradd -r -g mysql -s /sbin/nologin mysql13.3.软件环境获取软件 [root@Rocky9-12 ~]# mkdir -p /data/softs [root@Rocky9-12 ~]# cd /data/softs [root@Rocky9-12 softs]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.50-linux-glibc2.12-x86_64.tar.gz解压至指定目录,这个目录只能写 /usr/local/ [root@Rocky9-12 softs]# ls mysql-5.6.50-linux-glibc2.12-x86_64.tar.gz [root@Rocky9-12 softs]# tar xf mysql-5.6.50-linux-glibc2.12-x86_64.tar.gz [root@Rocky9-12 softs]# mv mysql-5.6.50-linux-glibc2.12-x86_64 /usr/local/mysql13.4.环境变量设定--可选[root@Rocky9-12 softs]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@Rocky9-12 softs]# source /etc/profile.d/mysql.sh [root@Rocky9-12 softs]# echo $PATH /usr/local/mysql/bin:/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin13.5.环境配置创建主配置文件 [root@Rocky9-12 softs]# mkdir /usr/local/mysql/etc [root@Rocky9-12 softs]# vim /usr/local/mysql/etc/my.cnf [root@Rocky9-12 softs]# cat /usr/local/mysql/etc/my.cnf [mysqld] port=3306 socket = /usr/local/mysql/data/mysql.sock user=mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data innodb_file_per_table=on skip_name_resolve = on symbolic-links=0 [client] socket = /usr/local/mysql/data/mysql.sock [mysqld_safe] pid-file = /usr/local/mysql/data/mysqld.pid log-error = /usr/local/mysql/log/error.log13.6.创建数据目录,建议使用逻辑卷创建依赖目录 [root@Rocky9-12 softs]# mkdir /usr/local/mysql/{data,log} 更改文件属性 [root@Rocky9-12 softs]# chown -R mysql:mysql /usr/local/mysql/13.7.环境初始化[root@Rocky9-12 softs]# cd /usr/local/mysql [root@Rocky9-12 mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db: Sys::Hostname确认文件 [root@Rocky9-12 mysql]# ll /usr/local/mysql/data/ total 110600 -rw-rw---- 1 mysql mysql 12582912 May 8 20:06 ibdata1 -rw-rw---- 1 mysql mysql 50331648 May 8 20:06 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 May 8 20:06 ib_logfile1 drwx------ 2 mysql mysql 4096 May 8 20:06 mysql drwx------ 2 mysql mysql 4096 May 8 20:06 performance_schema drwxr-xr-x 2 mysql mysql 20 May 8 19:56 test13.8.定制服务管理文件cat >/usr/lib/systemd/system/mysqld.service<<EOF [Unit] Description=MySQL Community Server Documentation=mysqld.service After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID LimitNOFILE = 10000 EOF重载配置 [root@Rocky9-12 bin]# systemctl daemon-reload 启动mysql [root@Rocky9-12 bin]# systemctl start mysqld.service 查看端口连接 [root@Rocky9-12 bin]# netstat -tunlp | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 1935/mysqld13.9.连接测试[root@Rocky9-12 ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.50 MySQL Community Server (GPL) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>查看当前版本信息 mysql> select version(); +-----------+ | version() | +-----------+ | 5.6.50 | +-----------+ 1 row in set (0.01 sec)修改密码 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> set password for 'root'@'localhost'=password('123456'); Query OK, 0 rows affected (0.01 sec) mysql> exit Bye-- 刷新权限表 FLUSH PRIVILEGES; -- 修改 root 用户在 localhost 上的密码 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');使用用户名和密码进行登录 [root@Rocky9-12 ~]# mysql -uroot -p123456 Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.6.50 MySQL Community Server (GPL) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit Bye13.10.初始化脚本提高安全性范例: 针对MySQL5.6前版本进行安全加固运行脚本:mysql_secure_installation 设置数据库管理员root口令 禁止root远程登录 删除anonymous用户帐号 删除test数据库[root@Rocky9-12 ~]# mysql -uroot -pMagedu Warning: Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.6.50 MySQL Community Server (GPL) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) mysql> select user,host from mysql.user; +------+-----------+ | user | host | +------+-----------+ | root | 127.0.0.1 | | root | ::1 | | | localhost | | root | localhost | | | rocky9-12 | | root | rocky9-12 | +------+-----------+ 6 rows in set (0.00 sec) mysql> exit Bye[root@Rocky9-12 ~]# file `which mysql_secure_installation` /usr/local/mysql/bin/mysql_secure_installation: Perl script text executable做个软链接,默认文件为/tmp/mysql.sock,否则会报如下错误 下面直接指定socket文件路径,也不行 [root@Rocky9-12 ~]# ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock [root@Rocky9-12 ~]# ll /tmp/mysql.sock lrwxrwxrwx 1 root root 32 May 8 21:08 /tmp/mysql.sock -> /usr/local/mysql/data/mysql.sock 错误: [root@Rocky9-12 ~]# /usr/local/mysql/bin/mysql_secure_installation --socket=/usr/local/mysql/data/mysql.sock NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) Enter current password for root (enter for none): ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) Enter current password for root (enter for none): ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) Unable to connect to the server as root user, giving up. Cleaning up...[root@Rocky9-12 ~]# /usr/local/mysql/bin/mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. You already have a root password set, so you can safely answer 'n'. Change the root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y ... Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y ... Success! All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL! Cleaning up...14.常见的报错信息14.1.报错信息[root@Rocky9-12 ~]#echo $PATH /root/.local/bin:/root/bin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin [root@Rocky9-12 ~]# whereis mysqld mysqld: /usr/local/mysql/bin/mysqld [root@Rocky9-12 ~]# ll /usr/local/mysql/bin/mysqld -rwxr-xr-x 1 mysql mysql 211661577 Oct 11 2023 /usr/local/mysql/bin/mysqld [root@Rocky9-12 ~]# mysqld -bash: /usr/local/mysql/bin/mysqld: No such file or directory文件存在,但提示文件一直提示找不到14.2.分析问题当你使用 whereis 命令能找到 mysqld 的路径,并且通过 ll 命令能看到该文件确实存在,但执行 mysqld 时却提示 “No such file or directory”,这通常不是文件本身不存在,而是因为缺少该程序运行所需的依赖库或者动态链接库路径配置有误。下面为你详细分析可能的原因及解决办法:1. 缺少 32 位兼容库 如果 mysqld 是 32 位程序,而你的系统是 64 位的,可能会因为缺少 32 位兼容库而导致找不到依赖的动态链接器。 解决办法: 在 Rocky Linux 9 系统中,你可以使用以下命令安装 32 位兼容库: dnf install -y glibc.i6862. 动态链接库路径配置问题 mysqld 程序可能依赖于某些特定的动态链接库,而这些库的路径没有被正确配置到系统的动态链接库搜索路径中。 解决办法: 临时解决:使用 LD_LIBRARY_PATH 环境变量来临时指定动态链接库的搜索路径。例如,如果 mysqld 依赖的库在 /usr/local/mysql/lib 目录下,可以执行以下命令: export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH mysqld 永久解决:创建一个新的.conf文件,将动态链接库的路径添加到该文件中,然后更新动态链接库缓存。 echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf ldconfig3. 文件损坏 mysqld 文件本身可能已经损坏,导致系统无法正确执行。4. SELinux 或防火墙限制 SELinux 或者防火墙可能会阻止 mysqld 程序的执行。 解决办法 SELinux:可以临时禁用 SELinux 来进行测试: setenforce 0 如果禁用 SELinux 后 mysqld 能够正常执行,你可以修改 SELinux 的策略来允许 mysqld 运行。 防火墙:确保防火墙没有阻止 mysqld 所需的端口(默认是 3306)。可以使用以下命令开放端口: firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload14.3.解决问题按照以上步骤操作,应该能够解决 mysqld 执行时提示 “No such file or directory” 的问题。 最后发现自己下载的第一个32位软件 自己下错版本信息了 最后下载64位安装就成功了,再也没有提示错误了endl
2025年05月08日
3 阅读
0 评论
0 点赞
2025-05-07
系统基础环境
系统基础环境PS1centosPS1='\[\e[1;36m\][\t \[\e[1;33m\]\u\[\e[1;34m\]@\h\[\e[1;35m\]:\W\[\e[1;32m\]]\[\e[0m\]\$ ' PS1='[\[\e[1;33m\]\u\[\e[35m\]@\h \[\e[1;31m\]\W\[\e[1;32m\]]\[\e[0m\]\$ ' PS1='\[\e[31;1m\][\u@\h \W]\$ \[\e[0m\]' 推荐下面两个,好看 PS1='\[\e[1;36m\][\[\e[1;33m\]\u\[\e[1;34m\]@\h\[\e[1;35m\]:\W\[\e[1;32m\]]\$\[\e[0m\] ' PS1='\[\e[1;36m\][\t \[\e[1;33m\]\u\[\e[1;34m\]@\h\[\e[1;35m\]:\W\[\e[1;32m\]]\$\[\e[0m\] '/etc/profile.d/env.shubuntuPS1='\[\e[1;36m\][\[\e[1;33m\]\u\[\e[1;34m\]@\h\[\e[1;35m\]:\W\[\e[1;32m\]]\$\[\e[0m\] ' PS1='\[\e[1;36m\][\t \[\e[1;33m\]\u\[\e[1;34m\]@\h\[\e[1;35m\]:\W\[\e[1;32m\]]\$\[\e[0m\] '.bashrcvimrcautocmd BufNewFile *.sh exec ":call ShellTitle()" function ShellTitle() call append(0,"#!/bin/bash") call append(1,"# *************************************") call append(2,"# * 功能: Shell脚本模板") call append(3,"# * 作者: 刘丹玉") call append(4,"# * 联系: v649352141@163.com") call append(5,"# * 版本: ".strftime("%Y-%m-%d")) call append(6,"# *************************************") endfunction set tabstop=2 set shiftwidth=2 set expandtab set number set autoindent set cursorline set showmatch syntax on set background=darketh0,ip/etc/default/grub net.ifnames=0 biosdevname=0 /etc/udev/rules.d/70.persistent-net.rules SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="$mac_num", ATTR{type}=="1", NAME="eth0" rocky: grub2-mkconfig -o /etc/grub2.cfg ubuntu: grub-mkconfig -o /boot/grub/grub.cfg[root@Rocky9-12 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection [connection] id=eth0 uuid=30af1819-8398-3bb4-9861-103bdbbc26b8 type=ethernet autoconnect-priority=-999 interface-name=eth0 timestamp=1745834507 [ethernet] [ipv4] method=manual address1=10.0.0.12/24,10.0.0.2 dns=10.0.0.2; [ipv6] addr-gen-mode=default method=auto [proxy][root@ubuntu24-13:~]# cat /etc/netplan/50-cloud-init.yaml # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} network: version: 2 renderer: networkd ethernets: eth0: addresses: - 10.0.0.13/24 routes: - to: default via: 10.0.0.2 nameservers: search: - baidu.com addresses: [ 8.8.8.8,129.19.19.19,233.6.6.6]防火墙,selinux,ufwsystemctl disable --now ufw systemctl disable --now firewalld getenforce vim /etc/selinux/config SELINUX=disabled设置主机名hostnamectl set-hostname Rocky9-12 hostnamectl set-hostname Rocky9-15 hostnamectl set-hostname Rocky9-18 hostnamectl set-hostname ubuntu24-13 hostnamectl set-hostname ubuntu24-16 hostnamectl set-hostname ubuntu24-19设置时区timedatectl set-timezone Asia/Shanghai终端语言localectl set-locale LANG=en_US.UTF-8rocky更新源sed -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \ -i.bak \ /etc/yum.repos.d/rocky-*.repo dnf makecacheubuntu源/etc/apt/sources.list# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse # 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse禁用 swapsed -i.bak '/swap/d' /etc/fstab优化ssh连接速度sed -i '/^GSSAPIAuthentication/s@^@#@g' /etc/ssh/sshd_config cat >>/etc/ssh/sshd_config<<EOF UseDNS no #相当于网络命令的-n选项. GSSAPIAuthentication no #关闭GSS认证. EOF systemctl restart sshd #检查 egrep '^(GSSAPIAuthentication|UseDNS)' /etc/ssh/sshd_config==安装Linux常用工具==生产实践:基于最小化安装的系统建议安装下面相关包# 自动挂载光盘 yum -y install autofs systemctl enable --now autofs # 访问 lsblk ls /misc/cd# 在安装或升级软件包之前,建议先执行apt update命令,以确保获取到最新的软件包信息 apt update # 最小化安装常用工具 yum -y tmux man-pages strace # 安装Linux常用工具 yum -y install tree vim wget lrzsz psmisc wget tcpdump ftp rsync lsof yum -y install net-tools sysstat iotop iftop htop zip unzip bzip2 nc nmap telnet bc yum -y install psmisc httpd-tools bind-utils nethogs expect # 终端复用器软件就是会话与窗口的“解绑”工具 yum -y install epel-release yum -y install screen # 命令补全 yum -y install bash-completion # 安装linux娱乐工具 yum install -y sl cowsayautofs tmux man-pages strace tree vim wget lrzsz psmisc wget tcpdump ftp rsync lsof net-tools sysstat iotop iftop htop zip unzip bzip2 nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect epel-release screen bash-completion sl cowsay装机必备软件【装机必备软件】安装通用软件vim net-tools bash-completion htop git tree psmisc rsyslog gcc make libxml2 jqsysstat iotop pcp-system-tools net-tools freerdp tcpdump telnet nmap mtr nmap-ncat lsof xfsdump strace boom-boot smartmontools yum-utils tmux psmisc rsync rsyslog sos strace perf valgrind bcc-tools # 系统监控和诊断工具 sysstat iotop pcp-system-tools # 网络 net-tools freerdp tcpdump telnet nmap mtr nmap-ncat # 文件系统与磁盘 lsof xfsdump strace boom-boot smartmontools # 系统管理 yum-utils tmux psmisc rsync # 日志 rsyslog sos # 调试和分析 strace perf valgrind bcc-tools这些软件的含义、用途以及在Ubuntu和RHEL中的应用情况:软件名称含义用途是否应用于Ubuntu是否应用于RHELautofs自动挂载文件系统工具自动管理文件系统的挂载,根据需要动态挂载和卸载文件系统,提高系统性能和资源利用率是是man-pages手册页文档提供系统命令、函数等的详细文档和使用说明,方便用户查阅是是strace系统调用跟踪工具用于跟踪进程执行时的系统调用和信号传递,帮助调试和分析程序运行过程中的问题是是tree目录树查看工具以树状结构显示目录结构,便于直观地查看目录和文件的层次关系是是vim文本编辑器功能强大的文本编辑器,用于编辑各种文本文件,支持多种编程语言的语法高亮和编辑功能是是wget网络下载工具用于从网络(如HTTP、FTP等)下载文件,支持断点续传等功能是是lrzsz文件传输工具用于在Linux和Windows系统之间通过串口或网络进行文件传输是是psmisc包含多个与进程管理相关的工具如pstree用于以树状显示进程关系,killall用于杀死指定名称的进程等是是tcpdump网络数据包捕获工具用于捕获和分析网络数据包,帮助网络管理员诊断网络问题是是ftp文件传输协议客户端用于通过FTP协议进行文件传输,与FTP服务器进行交互是是rsync远程同步工具用于在本地和远程系统之间高效地同步文件和目录,支持增量备份等功能是是lsof列出打开文件工具用于列出系统中当前打开的文件和相关进程信息,有助于排查文件被占用等问题是是net - tools网络工具集包含ifconfig、route等命令,用于网络配置和管理是,但在新的Ubuntu版本中逐渐被其他工具替代是,在RHEL 8中已被废弃,推荐使用nmcli等工具sysstat系统性能统计工具收集和报告系统性能相关的统计信息,如CPU使用率、内存使用情况、磁盘I/O等是是iotopI/O监控工具用于监控系统中进程的I/O使用情况,帮助发现I/O瓶颈是是iftop网络流量监控工具实时监控网络接口的流量情况,显示各个连接的带宽使用情况是是htop交互式进程查看器用于查看和管理系统中的进程,提供更友好的界面和更丰富的功能,相比传统的top命令更易用是是zip/unzip压缩/解压缩工具用于创建和提取ZIP格式的压缩文件是是bzip2压缩工具用于创建BZ2格式的压缩文件,压缩比通常比zip高是是nc网络连接工具可以用于创建网络连接、传输数据等,是一个功能强大的网络调试工具是是nmap网络扫描工具用于网络探测和安全评估,如扫描主机开放端口、检测网络服务等是是telnet远程登录工具用于通过Telnet协议远程登录到其他主机,进行命令行操作是是bc计算器用于进行高精度的数学计算,支持各种数学运算和函数是是httpd - toolsApache HTTP服务器工具集包含htpasswd等工具,用于管理Apache服务器的用户认证等是是bind - utilsDNS工具集包含nslookup、dig等工具,用于DNS查询和域名解析相关操作是是nethogs网络流量监控工具按进程监控网络流量,帮助用户了解各个进程的网络使用情况是是expect自动化交互工具用于自动化交互式命令的执行,通过脚本实现与其他程序的交互是是epel - releaseExtra Packages for Enterprise Linux 软件源用于在RHEL及其衍生系统上安装EPEL软件源,提供额外的软件包否是screen终端复用器允许在一个终端会话中管理多个终端窗口或会话,方便用户同时运行多个命令或程序是是bash - completionBash命令补全为Bash shell提供命令自动补全功能,提高命令输入效率是是sl模拟火车动画程序一个娱乐性的命令,运行后会显示一个火车在终端中行驶的动画是是cowsay文本生成工具将输入的文本以奶牛说话的形式显示出来,常用于娱乐或简单的文本展示是是pcp - system - tools性能计算伙伴关系系统工具用于系统性能监测和分析,提供更详细和灵活的性能数据收集和展示功能是是freerdp远程桌面协议客户端用于连接到Windows远程桌面服务,实现远程桌面访问是是mtr网络诊断工具结合了ping和traceroute的功能,用于诊断网络连接的质量和路径是是nmap - ncatNmap的网络连接工具类似于nc,用于创建网络连接和传输数据,是Nmap工具集的一部分是是xfsdumpXFS文件系统备份工具用于对XFS文件系统进行备份,支持全量和增量备份是是boom - boot未明确常见的标准工具,可能是特定环境或自定义的工具无明确通用用途未知未知smartmontools硬盘健康监测工具用于监测硬盘的健康状态,通过读取硬盘的SMART信息来评估硬盘的性能和预测故障是是yum - utilsYum包管理工具扩展提供一些额外的Yum命令和功能,方便软件包管理否是tmux终端复用器类似于screen,用于在一个终端中管理多个会话,支持更灵活的窗口布局和操作是是rsyslog系统日志管理工具用于收集、存储和转发系统日志,方便系统管理员查看和分析系统运行信息是是sos系统诊断工具集收集系统配置、日志等信息,用于故障排查和系统诊断是是perf性能分析工具用于分析系统性能瓶颈,如CPU使用率、内存访问等,帮助优化程序性能是是valgrind内存调试工具用于检测程序中的内存错误,如内存泄漏、非法内存访问等,帮助开发人员调试程序是是bcc - toolsBPF Compiler Collection工具集基于eBPF技术的性能分析和跟踪工具集,用于动态地跟踪和分析系统行为是是git分布式版本控制系统用于管理项目的版本控制,方便团队协作开发和代码管理是是gccGNU C编译器用于编译C语言程序,是Linux系统下常用的编译器是是make构建工具用于根据Makefile文件自动构建和编译项目,常用于C/C++项目的构建是是libxml2XML处理库提供了处理XML文档的函数和工具,用于开发需要解析和生成XML数据的应用程序是是htpasswd用于创建和管理Apache的密码文件用于为Apache服务器的用户认证创建和管理密码文件是是mkpasswd密码生成工具用于生成加密的密码,通常用于为系统用户或应用程序生成安全的密码是是适用于 Ubuntu 的软件列表软件名称含义用途autofs自动挂载文件系统工具自动根据需求挂载文件系统,提高系统资源使用效率man - pages手册页文档提供系统命令、函数等详细使用说明,方便查阅strace系统调用跟踪工具跟踪进程执行时的系统调用和信号,辅助调试程序tree目录树查看工具以树状结构展示目录内容,清晰呈现目录层级vim文本编辑器强大的文本编辑工具,支持多种编程语言编辑wget网络下载工具从网络(如 HTTP、FTP)下载文件,支持断点续传lrzsz文件传输工具借助 Zmodem 协议在 Linux 和 Windows 间传输文件psmisc进程管理工具集包含 pstree、killall 等命令,用于进程管理tcpdump网络数据包捕获工具捕获和分析网络数据包,诊断网络问题ftp文件传输协议客户端通过 FTP 协议进行文件上传和下载rsync远程同步工具高效同步本地与远程文件和目录,支持增量备份lsof列出打开文件工具显示系统中所有打开的文件及相关进程信息net - tools网络工具集含 ifconfig、route 等命令,用于网络配置和管理sysstat系统性能统计工具收集和报告系统性能指标,如 CPU、内存、磁盘 I/O 等iotopI/O 监控工具监控系统中进程的 I/O 使用情况,定位 I/O 瓶颈iftop网络流量监控工具实时显示网络接口的流量使用情况htop交互式进程查看器以可视化界面查看和管理系统进程zip压缩工具创建 ZIP 格式的压缩文件unzip解压缩工具解压 ZIP 格式的压缩文件bzip2压缩工具采用高效算法压缩文件,获得较高压缩比nc网络连接工具用于创建网络连接、传输数据,进行网络调试nmap网络扫描工具扫描网络主机、端口和服务,用于网络探测和安全评估telnet远程登录工具通过 Telnet 协议远程登录到其他主机bc计算器进行高精度数学计算,支持复杂数学运算httpd - toolsApache HTTP 服务器工具集包含 htpasswd 等工具,用于 Apache 服务器管理bind - utilsDNS 工具集包含 nslookup、dig 等命令,用于 DNS 查询和诊断nethogs网络流量监控工具按进程监控网络带宽使用情况expect自动化交互工具自动化执行交互式命令,模拟用户输入screen终端复用器在一个终端会话中管理多个虚拟终端bash - completionBash 命令补全工具为 Bash 提供命令自动补全功能,提高输入效率sl娱乐程序输入命令后显示动画火车,用于娱乐cowsay文本显示工具将文本以卡通奶牛说话形式显示pcp - system - tools性能计算伙伴系统工具收集、分析和展示系统性能数据freerdp远程桌面协议客户端连接到 Windows 远程桌面服务器mtr网络诊断工具结合 ping 和 traceroute 功能,诊断网络连接质量nmap - ncatNmap 的网络连接工具类似 nc,用于网络连接和数据传输xfsdumpXFS 文件系统备份工具对 XFS 文件系统进行全量或增量备份smartmontools硬盘健康监测工具监测硬盘健康状态,读取 SMART 信息tmux终端复用器提供更强大的终端会话管理功能rsyslog系统日志管理工具收集、存储和转发系统日志sos系统诊断工具集收集系统配置和日志信息,辅助故障排查perf性能分析工具分析系统性能瓶颈,优化程序性能valgrind内存调试工具检测程序中的内存错误,如泄漏、越界等bcc - toolsBPF 编译器集合工具基于 eBPF 技术进行系统性能分析和跟踪git分布式版本控制系统管理项目代码版本,支持团队协作开发gccGNU C 编译器编译 C 语言源代码生成可执行文件make构建工具根据 Makefile 自动编译和构建项目libxml2XML 处理库提供 XML 解析、生成和操作功能htpasswd密码文件管理工具为 Apache 等服务器创建和管理用户认证密码文件mkpasswd密码生成工具生成加密的密码字符串适用于 RHEL 的软件列表软件名称含义用途autofs自动挂载文件系统工具自动根据需求挂载文件系统,提高系统资源使用效率man - pages手册页文档提供系统命令、函数等详细使用说明,方便查阅strace系统调用跟踪工具跟踪进程执行时的系统调用和信号,辅助调试程序tree目录树查看工具以树状结构展示目录内容,清晰呈现目录层级vim文本编辑器强大的文本编辑工具,支持多种编程语言编辑wget网络下载工具从网络(如 HTTP、FTP)下载文件,支持断点续传lrzsz文件传输工具借助 Zmodem 协议在 Linux 和 Windows 间传输文件psmisc进程管理工具集包含 pstree、killall 等命令,用于进程管理tcpdump网络数据包捕获工具捕获和分析网络数据包,诊断网络问题ftp文件传输协议客户端通过 FTP 协议进行文件上传和下载rsync远程同步工具高效同步本地与远程文件和目录,支持增量备份lsof列出打开文件工具显示系统中所有打开的文件及相关进程信息net - tools网络工具集含 ifconfig、route 等命令,用于网络配置和管理sysstat系统性能统计工具收集和报告系统性能指标,如 CPU、内存、磁盘 I/O 等iotopI/O 监控工具监控系统中进程的 I/O 使用情况,定位 I/O 瓶颈iftop网络流量监控工具实时显示网络接口的流量使用情况htop交互式进程查看器以可视化界面查看和管理系统进程zip压缩工具创建 ZIP 格式的压缩文件unzip解压缩工具解压 ZIP 格式的压缩文件bzip2压缩工具采用高效算法压缩文件,获得较高压缩比nc网络连接工具用于创建网络连接、传输数据,进行网络调试nmap网络扫描工具扫描网络主机、端口和服务,用于网络探测和安全评估telnet远程登录工具通过 Telnet 协议远程登录到其他主机bc计算器进行高精度数学计算,支持复杂数学运算httpd - toolsApache HTTP 服务器工具集包含 htpasswd 等工具,用于 Apache 服务器管理bind - utilsDNS 工具集包含 nslookup、dig 等命令,用于 DNS 查询和诊断nethogs网络流量监控工具按进程监控网络带宽使用情况expect自动化交互工具自动化执行交互式命令,模拟用户输入epel - release额外企业 Linux 软件源为 RHEL 及其衍生系统添加 EPEL 软件源screen终端复用器在一个终端会话中管理多个虚拟终端bash - completionBash 命令补全工具为 Bash 提供命令自动补全功能,提高输入效率sl娱乐程序输入命令后显示动画火车,用于娱乐cowsay文本显示工具将文本以卡通奶牛说话形式显示pcp - system - tools性能计算伙伴系统工具收集、分析和展示系统性能数据freerdp远程桌面协议客户端连接到 Windows 远程桌面服务器mtr网络诊断工具结合 ping 和 traceroute 功能,诊断网络连接质量nmap - ncatNmap 的网络连接工具类似 nc,用于网络连接和数据传输xfsdumpXFS 文件系统备份工具对 XFS 文件系统进行全量或增量备份smartmontools硬盘健康监测工具监测硬盘健康状态,读取 SMART 信息yum - utilsYum 工具集辅助 Yum 包管理器进行软件包管理tmux终端复用器提供更强大的终端会话管理功能rsyslog系统日志管理工具收集、存储和转发系统日志sos系统诊断工具集收集系统配置和日志信息,辅助故障排查perf性能分析工具分析系统性能瓶颈,优化程序性能valgrind内存调试工具检测程序中的内存错误,如泄漏、越界等bcc - toolsBPF 编译器集合工具基于 eBPF 技术进行系统性能分析和跟踪git分布式版本控制系统管理项目代码版本,支持团队协作开发gccGNU C 编译器编译 C 语言源代码生成可执行文件make构建工具根据 Makefile 自动编译和构建项目libxml2XML 处理库提供 XML 解析、生成和操作功能htpasswd密码文件管理工具为 Apache 等服务器创建和管理用户认证密码文件mkpasswd密码生成工具生成加密的密码字符串一条命令yum -y install autofs tmux man-pages strace tree vim wget lrzsz psmisc wget tcpdump ftp rsync lsof net-tools sysstat iotop iftop htop zip unzip bzip2 nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect epel-release screen bash-completion sl cowsay vim net-tools bash-completion htop git tree psmisc rsyslog gcc make libxml2 jq sysstat iotop pcp-system-tools net-tools freerdp tcpdump telnet nmap mtr nmap-ncat lsof xfsdump strace boom-boot smartmontools yum-utils tmux psmisc rsync rsyslog sos strace perf valgrind bcc-toolsapt -y install sysstat iotop net-tools tcpdump telnet nmap mtr lsof xfsdump strace smartmontools tmux psmisc rsync rsyslog strace valgrind vim net-tools bash-completion htop git tree psmisc rsyslog gcc make libxml2 jq autofs tmux strace tree vim wget lrzsz psmisc wget tcpdump ftp rsync lsof net-tools sysstat iotop iftop htop zip unzip bzip2 nmap telnet bc psmisc nethogs expect screen bash-completion sl cowsayendl
2025年05月07日
3 阅读
0 评论
0 点赞
2025-03-12
Linux彩色命令提示符prompt
@TOC一、彩色命令提示符prompt登录Linux后,默认的系统提示符毫无个性,无法明显辨别生产和测试环境,而导致误操作。可以通过修改PS1变量实现个性的提示符格式,避免这种低级错误。1.1.默认的提示符#Rocky默认的提示符 [dange@rocky8-1 ~]# #ubuntu默认的提示符 dange@ubuntu2204:~# - # 管理员 - $ 普通用户#查看当前命令提示符 [dange@rocky8-1 ~]$ echo $PS1 [\u@\h \W]\$ PS1变量代表的内容就是用户名+@+主机名+路径名(长路径)+ $ # 如果以root用户登录主机,则默认提示符为,对应的就是上面的[\u@\h \W]\$ [dange@rocky8-1 ~]# # PS1中的值要使用单引号引用,如果是双引号,则某些替换符不会被解析 PS1='\[\e[31m\][\u@\h \W]\$\[\e[0m\]' # 如果是永久保存,则要写入文件 echo "PS1='\[\e[31m\][\u@\h \W]\$\[\e[0m\]'" > /etc/profile.d/env.sh source /etc/profile.d/env.sh1.2.PS1变量中的常用选项PS1变量中的常用选项说明#PS1变量中的常用选项\d日期,格式为"星期 月 日"\H完整的主机名。如默认主机名"localhost.localdomain"\h简写的主机名。如默认主机名"localhost"\t24小时制问题,格式为"HH:MM:SS"\T12小时制时间,格式为"HH:MM:SS"。\A24小时制时间,格式为"HH:MM"。\@12小时制时间,格式为"HH:MM am/pm"。\u当前用户名。\vBash版本信息。\w当前所在目录的完整名称。\W当前所在目录的最后一个目录。\#执行的第几条命令。$提示符。如果是 root 用户,则会显示提示符为"#";如果是普通用户,则会显示提示符为"$"1.3.PS1中颜色部分1.3.1.开始结束位#PS1中颜色部分 \033[ #开始为 \033[0m #结束位 # 上面的\033 可以换成 \e # 颜色设置 \e[ 颜色m 内容 \e[0m 颜色后面要用m结束,多个颜色,用;分隔,只要一个m \e[31m我是红色\e[0m1.3.2.各颜色表示方式字体颜色背景色颜色3040黑色3141红色3242绿色3343黄色3444蓝色3545紫红色3646青蓝色3747白色字体颜色背景颜色\e[30m我是黑色\e[0m\e[40m我是黑色\e[0m\e[31m我是红色\e[0m\e[41m我是红色\e[0m\e[32m我是绿色\e[0m\e[42m我是绿色\e[0m\e[33m我是黄色\e[0m\e[43m我是黄色\e[0m\e[34m我是蓝色\e[0m\e[44m我是蓝色\e[0m\e[35m我是紫红色\e[0m\e[45m我是紫红色\e[0m\e[36m我是青蓝色\e[0m\e[46m我是青蓝色\e[0m\e[37m我是白色\e[0m\e[47m我是白色\e[0m# 字体颜色+背景颜色组合,字体颜色和背景颜色不分先后,因为值不一样 \e[30;40m红底黑字\e[0m \e[41;30m红底黑字\e[0m1.3.3.特殊效果特殊效果含义0关闭效果1高亮效果3斜体4下划线5闪烁,闪烁效果与远程工具所在的环境有关7反白显示8隐藏9删除线可组合使用,但如果效果有冲突时,以最后的为准,就是说,后面的效果,会覆盖前面的效果\e[30;41;5m红底黑色字闪烁\e[0m \e[4;30;41;5m红底黑色字下划线闪烁\e[0m \e[0;4;30;41;5m红底黑字下划线闪烁\e[0m #这里的0;4;5 都表示效果,但后面的4;5覆盖了前面的0 \e[4;30;41;5;0m红底黑字下划线闪烁\e[0m #这样写,4;5的效果都被0去掉了1.4.范例:在CentOS系统实现持久保存提示符格式PS1='[\u@\h \W]\$'PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\$\[\e[0m\] 'PS1='\[\e[31;1m\][\u@\h \W]\$ \[\e[0m\]'1.5.范例:ubuntu2204中PS1dange@ubuntu2204:~$ echo $PS1 \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ # ${debian_chroot:+($debian_chroot)} 表示给变量赋值,如果存在 /etc/debian_chroot 文件,则该文件中内容会被赋值给变量$debian_chroot #文件不存在 root@ubuntu2204:~# ls /etc/debian_chroot ls: cannot access '/etc/debian_chroot': No such file or directory #变量为空 root@ubuntu2204:~# echo $debian_chroot在 ubuntu2204 中,设置 PS1,如果要对所有普能用户生效,将 PS1 定义写在 /usr/share/bash-completion/bash_completion 的最下面,如里需要对每个用户单独定义,写在用户家目录的 .bashrc 文件的最下面。范例:实现Ubuntu系统持久保存提示符格式PS1='\[\e[1;35m\][\u@\h \W]\\$\[\e[0m\] ' PS1='\[\e[1;31m\][\u@\h:\w]\$\[\e[0m\] '1.6.PS1中颜色设置过程分解【详解】[\u@\h \W]\$ 用户名+@+主机名+路径名(长路径)+ 提示符符号($) 颜色如何设置: 一个单独的颜色设置: \e[代码;前景;背景m, 如:\[\e[1;32;40m\]表示高亮显示字体为绿色,背景色为黑色。 注意:颜色的设置,放在相应的要设置的前面 如用户名颜色设置: \[\e[01;35;40m\]\u 结束颜色设置: \[\e[0m\]PS1='[\u@\h \W]\$ ' PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ ' PS1='\e[31;1m[\u@\h \W]\$ \e[0m ' PS1='\e[1;35m[\u@\h \W]\$ \e[0m ' PS1='\[\e[1;35m\][\u@\h \W]\$ \[\e[0m\] ' 如用户名颜色设置: \[\e[01;35;40m\]\u 结束颜色设置: \[\e[0m\] PS1='[\u@\h \W]\$ ' PS1='[\u@\h \W]\$ ' PS1='\[\e[1;32m\][\u@\h \W]\[\e[0m\]\$ ' PS1='\[\e[1;32m\][\[\e[1;33m\]\u@\h \W]\[\e[0m\]\$ ' PS1='\[\e[1;32m\][\[\e[1;33m\]\u\[\e[1;35m\]@\h \W]\[\e[0m\]\$ ' PS1='\[\e[1;32m\][\[\e[1;33m\]\u\[\e[1;35m\]@\h\[\e[1;31m\] \W]\[\e[0m\]\$ ' PS1='\[\e[1;32m\][\[\e[1;33m\]\u\[\e[1;35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ '1.7.我使用的色彩1.7.1.Rocky8PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ ' PS1='\[[\[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ ' PS1='\[\e[31;1m\][\u@\h \W]\$ \[\e[0m\]' # 如果是永久保存,则要写入文件 echo "PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\$ '" > /etc/profile.d/env.sh echo "PS1='\[\e[31;1m\][\u@\h \W]\$ \[\e[0m\]'" > /etc/profile.d/env.sh source /etc/profile.d/env.sh1.7.2.ubuntu2004[13:49:10 dange@ubuntu2004 ~]$ echo $PS1 \[\e[1;32m\][\t \[\e[1;35m\]\u@\h \W]\$\[\e[0m\] [13:49:15 dange@ubuntu2004 ~]$ [13:49:21 dange@ubuntu2004 ~]$ su - root Password: [13:49:27 root@ubuntu2004:~]# echo $PS1 \[\e[1;32m\][\t \[\e[1;31m\]\u@\h:\W]\$\[\e[0m\]PS1='\[\e[1;31m\][\u@\h:\W]\$\[\e[0m\] ' PS1='\[\e[1;32m\][\t \[\e[1;31m\]\u@\h:\W]\$\[\e[0m\] ' PS1='\[\e[1;32m\][\t \[\e[1;33m\]\u@\[\e[1;31m\]\h:\W\[\e[1;32m\]]\$\[\e[0m\] ' echo "PS1='\[\e[1;31m\][\u@\h:\W]\$\[\e[0m\] '" >> .bashrc echo "PS1='\[\e[1;32m\][\t \[\e[1;31m\]\u@\h:\W]\$\[\e[0m\] '" >> .bashrc source .bashrc1.8.关于为centos7中命令提示符设置颜色之后,无法正常换行的问题单引号和双引号问题endl
2025年03月12日
0 阅读
0 评论
0 点赞
2024-11-16
时间同步【Chrony服务】
@TOC1.时间工具timedatectl 时间和时区管理#查看日期时间、时区及NTP状态: timedatectl #查看时区列表: timedatectl list-timezones #修改时区: timedatectl set-timezone Asia/Shanghai #修改时区 root@ubuntu2004:~# rm -f /etc/localtime root@ubuntu2004:~# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #修改日期时间: timedatectl set-time "2017-01-23 10:30:00" #开启NTP: timedatectl set-ntp true/falsentpdate 时间同步命令,CentOS8版本此命令已淘汰system-config-date:图形化配置chrony服务的工具2.时间同步服务2.1.ntp2.2.chrony3.配置文件chrony.conf官方文档: https://chrony.tuxfamily.org/doc/3.5/chrony.conf.htmlserver #可用于时钟服务器,iburst 选项当服务器可达时,发送一个八个数据包而不是通常的一个数据包。 包间隔通常为2秒,可加快初始同步速度 pool #该指令的语法与server 指令的语法相似,不同之处在于它用于指定NTP服务器池而不是单个NTP服务器。池名称应解析为随时间可能会变化的多个地址 driftfile #根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中,会在重启后为系统时钟作出补偿 rtcsync #启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC) allow / deny #指定一台主机、子网,或者网络以允许或拒绝访问本服务器 cmdallow / cmddeny #可以指定哪台主机可以通过chronyd使用控制命令 bindcmdaddress #允许chronyd监听哪个接口来接收由chronyc执行的命令 makestep # 通常chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时调整系统时钟 local stratum 10 #即使server指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它客户端4.centos6 ntp客户端同步检查yum -y install ntp yum list ntp /etc/init.d/ntpd start ntpq -p5.案例安装chrony并校准时间同步yum list chrony # 安装软件chrony yum -y install chrony date -s '2 year' # 增加2年 date -s '2 day' # 增加2天 # 查看服务状态 systemctl start chronyd.service systemctl status chronyd.service # 更改配置文件 vim /etc/chrony.conf pool ntp.aliyun.com iburst allow 10.0.0.0/24 local stratum 10 # 重启服务 systemctl restart chronyd.service # 查看时间同步源 chronyc sources -v # 立即手工同步 chronyc -a makestep # 查看时间同步源状态 chronyc sourcestats -v # 设置硬件时间 # 硬件时间默认为UTC timedatectl set-local-rtc 1 # 校准时间服务器 chronyc tracking6.chronyc交互式# 启动几台机器 # 更改配置文件 vim /etc/chrony.conf pool 10.0.0.7 iburst7.实现私有的时间服务器名称主机服务器10.0.0.7客户端10.0.0.8客户端10.0.0.9客户端10.0.0.1007.1.服务器配置123安装软件[11:03:23 root@centos7 ~]# hostname -I 10.0.0.7 yum -y install chrony apt -y install chrony编辑配置文件vim /etc/chrony.conf server ntp.aliyun.com iburst server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst #allow 192.168.0.0/16 allow 0.0.0.0/0 #加此行,指定允许同步的网段 # Serve time even if not synchronized to a time source. local stratum 10 #删除此行注释,当互联网无法连接,仍然可以为客户端提供时间同步服务重启服务systemctl restart chronyd7.2.客户端配置323修改配置文件[10:42:59 root@Rocky8 ~]# vim /etc/chrony.conf server 10.0.0.7 iburst重启服务[10:59:25 root@Rocky8 ~]# systemctl restart chronyd确认同步成功chronyc sources -v # ubuntu chronyc -n sourcestats说明: ^* #已同步 ^? #未同步 192.168.2.25 #时间服务器IP8.时间同步chrony脚本cat chrony_date.sh #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin . /etc/os-release chrony_date(){ if [[ ${ID} =~ ^(rocky|centos|rhel) ]];then rpm -q chrony &>/dev/null || yum -y install chrony &>/dev/null sed -Ei.bak 's/^server .*/server ntp.aliyun.com iburst/' /etc/chrony.conf #sed -Ei.bak 's@#allow .*@allow 0.0.0.0/0 #加此行,指定允许同步的网段@' /etc/chrony.conf #sed -Ei.bak 's@#local stratum 10@local stratum 10 #删除此行注释,当互联网无法连接,仍然可以为客户端提供时间同步服务@' /etc/chrony.conf systemctl enable --now chronyd.service elif [[ ${ID} =~ ^(ubuntu) ]];then dpkg -V chrony &>/dev/null || apt -y install chrony &>/dev/null sed -Ei.bak 's/^pool ntp.ubuntu.*/pool ntp.aliyun.com iburst/' /etc/chrony/chrony.conf sed -Ei.bak 's/^pool .*ubuntu.pool.*//' /etc/chrony/chrony.conf systemctl start chronyd fi } chrony_dateendl
2024年11月16日
7 阅读
0 评论
0 点赞
2024-11-12
Crontab【定时服务】
@TOC1.服务使用流程服务使用流程说明部署安装这个服务或软件配置如何使用这个服务通过配置文件,通过命令。初级使用:能用就行。提高:额外配置。优化或注意事项安全......排障难点:one:学会通过错误提示解决问题:two:学会看日志:three:高级:让服务输出错误提示或者输出更加详细的错误提示(通过重定向)其他:one:做好监控:two:做好备份:three:做好日志收集:four:统一认证2.部署定时任务2.1.定时任务软件包名字:cronie , 服务名字(进程)crondrpm -qa cronie rpm -qi cronie rpm -ql cronie2.2.目录结构及说明目录结构说明:one:/var/spool/cron/用户的定时任务的配置文件的目录:two:crontab定时任务管理的命令:three:/var/log/cron定时任务日志‘了解就行的配置文件 /etc/crontab不推荐使用这个,系统定时任务的配置文件/etc/cron.hourly/系统定时任务,每小时运行/etc/cron.daily/系统定时任务,每天运行/etc/cron.weekly/系统定时任务,每周运行/etc/cron.monthly/系统定时任务,每个月运行2.3.检查是否运行2.4.使用指南2.4.1.配置的命令crontab用于对定时任务的规则进行增删改查.crontab选项说明 crontab -eedit编辑当前用户的定时任务vi /var/spool/cron/root #root当前用户的名字crontab -llist查看当前用户的定时任务cat /var/spool/cron/root #root当前用户的名字[08:45:41 root@centos7 data]# crontab -l no crontab for root 用户未设定定时任务 [08:47:51 root@centos7 data]# crontab -e no crontab for root - using an empty one #用户未设置定时任务 给你创建空的 #1. crond test by dange "/tmp/crontab.vqDK9C" 1L, 24C written crontab: installing new crontab # 更新了定时任务的配置。2.4.2.定时任务书写格式-时间 *# 每天早上8:30分 去学校(go to school) # 1.test01 30 08 * * * go to school # 晚上12点上床睡觉(go to bed/sleep) dbj # 2.test02 * 00 * * * go to bed #每天的半夜12点00-59每分钟运行. 00 00 * * * go to bed #每天运行 问题: 表示整点的时候,未说明分钟的时候,我们要指定的分钟,一般是00.关于分钟位置上是否写*说明 涉及到小时,天,周几的时候,分钟位置上记得写个数(00)每周六半夜12点带cc去dbj * 00 * * 06 dbj * 每周的半夜12点00-59,每分钟都大保健1次 (分钟1次) 0-59 00 00 * * 06 dbj 每周六的半夜12点去dbj2.4.3.定时任务时间部分的特殊符号 *时间部分特殊符号说明案例/每隔xxx时间/2 每2分钟00 /2 * 每2小时-表示范围00 08-22 * 08-22点的每个小时运行,表示独立时间(没规律)00 08,11,14,17,20 **每,全部/所有(没说具体时间) 在分钟的位置上表示00-59,每分钟的意思在小时位置上表示00-23,每小时的意思每天的上午7点到晚上11点 每二个小时运行CMD命令 00 07-23/2 * * * CMD 07 09 11 13 15 17 19 21 23 定时任务每天23点到第2天的7点运行. 00 23,00-07 * * *3.定时任务案例同步时间进行备份日常循环操作巡检+发送邮件3.1.案例01: 每2分钟同步下系统的时间#1. 同步时间,每2分钟同步一次时间 */2 * * * * /sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1tail -f /var/log/cron3.2.案例02: 每天定时备份/etc/到/backup/下面:star::star::star::star::star:3.2.1.命令mkdir -p /backup/ tar -czf /backup/etc-`date +%F_%W`.tar.gz /etc/3.2.2.脚本# 专用脚本目录 mkdir -p /server/scripts/devops-shell# 书写脚本 [15:02:36 root@centos7 devops-shell]# cat backup-etc.sh #!/bin/bash if [ ! -d /backup/ ];then mkdir -p /backup/ fi tar -czf /backup/etc-`date +%F_%T`.tar.gz /etc/3.2.3.定时任务-时间每分钟或每2分钟(调试)#3.backup etc by dange 2024-10-23 * * * * * sh /server/scripts/devops-shell/backup-etc.sh3.2.4. 检查日志和结果watch ls -l3.2.5.定时任务-调试完成后改为指定的时间运行#2. 定时备份 /etc/ 目录 00 00 * * * sh /server/scripts/devops-shell/backup-etc.sh4.定时任务注意事项(箴言)命令使用绝对路径.书写的命令或脚本定向到空或追加到文件.4.1.定时任务书写流程:one:分析要求需要使用什么命令并调试:two:书写脚本(命令较多,功能复杂)与调试:three:书写定时任务的配置文件(绝对路径,定向到空):four:调试4.2.增加注释书写定时任务的时候,尽量添加上一个注释.用于说明这条定时任务作用.4.3.尽量使用脚本定时任务未来避免一些故障,推荐使用脚本.调试脚本的方法: sh -x 或bash -x ,显示脚本执行过程. 有+开头的表示脚本背后执行的过程. 如果开头没有+,表示输出.4.4.定时任务的文件,脚本使用绝对路径/server/scripts/backup-etc.sh4.5.命令使用绝对路径定时任务中直接写命令,可以加上绝对路径定时任务中运行脚本,脚本开头可以重新设置PATH环境变量4.6.定时任务中执行的命令或脚本定向到空或追加到文件# 定向到空 #1.同步时间 */2 * * * * /sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 # 追加到文件 #2.echo * * * * * echo hello >>/tmp/hello.txt 2>&1 #3.定时备份 /etc/ 目录 00 01 * * * /bin/bash -x /server/scripts/backup-etc.sh >>/tmp/scripts.log 2>&15.定时任务故障案例5.1.定时任务直接书写的时候%有特殊含义%回车.去掉特殊含义需要使用\如果使用脚本,就没有这个问题了5.2.定时任务关于命令路径的故障在定时任务运行命令或脚本的时候,只能识别到/bin或/usr/bin目录下面的命令.只要不在这些目录下面的命令,就要使用绝对路径或者重新定义下PATH环境变量.5.2.1.故障案例故障案例:现象: 命令行执行命令或脚本是成功的,交到了定时任务中执行,提示命令找不到.原因: 定时任务运行脚本的时候或命令的时候,只能识别/bin和/usr/bin目录下面的命令.其他的命令无法识别.解决方案:🅰 简单粗暴,遇到这种命令,直接写绝对路径.🅱 治本,在脚本开头 重新定义下PATH环境变量或重新加载下PATH环境变量.定时任务识别的命令的路径:PATH linux环境变量,存放命令的位置.linux会在PATH路径中查找,如果有则执行.如果没有提示command not found/ no such file or directory5.2.2.使用解决方案🅰5.2.3.使用解决方案🅱 重新定义PATH5.2.4.使用解决方案🅱 重新加载PATH变量5.2.5.故障实例5.3.定时任务没有定向到空或追加到文件故障案例现象:邮件服务开启: 不断收到邮箱 You have new mail in /var/spool/mail/root邮件服务关闭: 一些邮件的临时目录不断堆积小文件. /var/spool/postfix/maildrop原因:定时任务运行命令或脚本的时候,命令或脚本有输出,定时任务就会通过邮件形式发送给root.解决:定时任务中命令或脚本定向到空或追加到文件.# 定向到空 #1.同步时间 */2 * * * * /sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1 # 追加到文件 #2.echo * * * * * echo hello >>/tmp/hello.txt 2>&1 #3.定时备份 /etc/ 目录 00 01 * * * /bin/bash -x /server/scripts/backup-etc.sh >>/tmp/scripts.log 2>&16.定时任务使用案例6.1.定时备份/etc/目录到/backup以ip地址命名的目录中书写脚本+变量取出ip存放变量 ✅取出时间存放到变量 ✅创建以ip命名目录 ✅打包压缩存放到这个ip地址命名的目录中,压缩包加上时间 ✅书写定时任务(每分钟)书写定时任务(改为指定时间)6.2.定时系统巡检(定时输出系统基本信息)写入到/tmp/sys.log中通过手动或自动方式,获取所有主机的基本信息.未来这个操作可以通过监控实现.主机名信息(主机名) ip地址 负载信息(0 0 0) 内存信息(内存多大,用了多少,剩余多少) cpu信息(核心数) 磁盘信息(磁盘使用多少,剩余多少) 进程信息(一共多少进程,几个运行,几个挂起,几个僵尸)写入到/tmp/sys.log文件的格式################################# 主机名: oldboyedu ip地址: 10.0.0.200 ################################# 负载信息 最近1分钟: 0 最近5分钟: 0 最近15分钟: 0 ################################# 内存信息(单位kb) 总计内存: 2000000 内存使用了多少: 200000 内存使用率: 10% ################################# swap信息 swap总大小: 200000 swap使用大小: 0 swap使用率: 0 ################################# 磁盘信息 几块硬盘: 1 根分区大小: 20G 根分区使用率: 10% ################################ 进程信息 进程总数: 100 运行中进程: 2 挂起进程数量: 0 僵尸进程数量: 0 ################################[12:43:53 root@centos7 devops-shell]# cat sys_info_85_day26_v1.sh #!/bin/bash # #********************************************************** #Author: dange #QQ 123456 #Date: 2024-10-24 #FileName: sys_info_85_day26.sh #Version: V1.0 #URL: www.baidu.com #Description: 系统巡检脚本 #Copyright (C): 2024 All rights reserved #********************************************************* export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin #1.输出基本信息 hostname=`hostname` ip=`hostname -I | awk '{print $1}'` echo "#############################################" echo "主机名:${hostname} IP地址:${ip}" #2.负载信息 load1=`uptime | awk -F'[ ,]+' '{print $(NF-2)}'` load5=`uptime | awk -F'[ ,]+' '{print $(NF-1)}'` load15=`uptime | awk -F'[ ,]+' '{print $(NF)}'` echo "###############系统负载信息##################" echo "系统负载信息" echo "最近1分钟负载:${load1}" echo "最近5分钟负载:${load5}" echo "最近15分钟负载:${load15}" #3.内存信息 mem_total=`free -m | awk 'NR==2{print $2}'` mem_used=`free -m | awk 'NR==2{print $3}'` mem_used_percent=`free -m | awk 'NR==2{print $3/$2*100"%"}'` echo "###############内存信息(单位MB)##############" echo "总计内存:${mem_total}MB" echo "已用内存:${mem_used}MB" echo "内存使用率:${mem_used_percent}" #4.swap信息 swap_total=`free -m | awk 'NR==3{print $2}'` swap_used=`free -m | awk 'NR==3{print $3}'` swap_used_percent=`free -m | awk 'NR==3{print $3/$2*100"%"}'` echo "###############内存swap信息##################" echo "swap总大小:${swap_total}MB" echo "swap使用大小:${swap_used}" echo "swap使用率:${swap_used_percent}" #5.磁盘信息 disk_count=`fdisk -l 2>/dev/null| grep '/dev/sd[a-z]:' | wc -l` root_total_size=`df -h | awk '$NF=="/"{print $2}'` root_used_percent=`df -h | awk '$NF=="/"{print $5}'` echo "##################磁盘信息####################" echo "硬盘数量:${disk_count}" echo "根分区大小:${root_total_size}" echo "根分区使用率:${root_used_percent}" #6.进程信息 proc_total=`top -b -n1 | awk 'NR==2{print $2}'` proc_running=`top -b -n1 | awk 'NR==2{print $4}'` proc_stopped=`top -b -n1 | awk 'NR==2{print $(NF-3)}'` proc_zombine=`top -b -n1 | awk 'NR==2{print $(NF-1)}'` echo "##################进程信息####################" echo "进程总数:${proc_total}" echo "运行中的进程数:${proc_running}" echo "挂起的进程数量:${proc_stopped}" echo "僵尸进程数量:${proc_zombine}" echo "#############################################"6.3.发送邮件6.3.1.配置发件人:1636.3.2.获取:授权码(用户密码)HRQPVKNACQMQOLYZ6.3.3.linux配置/etc/mail.rc不推荐vim /etc/mail.rc #写到最后 #未加密的发送方式通过25端口,会被公有云封掉. cat >>/etc/mail.rc <<EOF set from=lidao996@163.com set smtp=smtp.163.com set smtp-auth-user=lidao996@163.com set smtp-auth-password=BGRCTL CZXIT set smtp-auth=login EOF推荐#加密的方式465端口 cat >>/etc/mail.rc <<EOF set nss-config-dir=/etc/pki/nssdb/ set smtp-user-starttls set ssl-verify=ignore set from=lida996@163.com set smtp=smtps://smtp.163.com:465 set smtp-auth-user=lido996@163.com set smtp-auth-password=aaaa set smtp-auth=login EOF详解set from=lidao996@163.com #配置发件人 set smtp=smtp.163.com #配置使用163发送邮件 如果是加密smtps://smtp.163.com:465 set smtp-auth-user=lidao996@163.com #用户名:邮箱名字 set smtp-auth-password=BGRCTLKQDU IT #授权码 set smtp-auth=login #认证形式login #下面3行用于配置加密方式进行传输 set nss-config-dir=/etc/pki/nssdb/ set smtp-user-starttls set ssl-verify=ignore6.3.4.问题配置加密方式发送邮件错误: Error in certificate: Peer's certificate issuer is not recognized解决方法:在sys_info_85_day26_v1.sh 脚本后面加入echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >/etc/pki/nssdb/163.crt certutil -A -n "GeoTrust SSL CA" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/163.crt certutil -A -n "GeoTrust Global CA" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/163.crt certutil -L -d /etc/pki/nssdb/ #cd /etc/pki/nssdb/ certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i /etc/pki/nssdb/163.crt6.3.5.发送邮件cat /backup/result.log |mail -s "今日巡检的结果" youjiu_linux@qq.com mail -s '巡检' youjiu_linux@qq.com6.3.6.发送邮件带上附件echo "巡检信息在附件" |mail -s "巡检结果" -a /backup/result.log youjiu_linux@qq.com6.3.7.写入定时任务脚本:获取系统各种指标与信息 脚本存放到文件 命令把文件内容通过邮件发送走脚本关系 sh /server/scripts/send-mail.sh 调用执行sh /server/scripts/sys-info.sh 脚本 上面脚本的结果写入到/backup/result.log文件中 通mail命令把result.log发送给对应的用户6.3.8.测试定时任务#6. 系统巡检并发送邮件 * * * * * sh /server/scripts/send-mail.sh &>/dev/null6.4.表格csv表格:通过逗号分割的内容[15:28:44 root@centos7 devops-shell]# cat sys_info_85_day26_v2_csv.sh #!/bin/bash # #********************************************************** #Author: dange #QQ 123456 #Date: 2024-10-24 #FileName: sys_info_85_day26.sh #Version: V1.0 #URL: www.baidu.com #Description: 系统巡检脚本 #Copyright (C): 2024 All rights reserved #********************************************************* export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin #1.输出基本信息 hostname=`hostname` ip=`hostname -I | awk '{print $1}'` echo "主机名,${hostname}" echo "IP地址,${ip}" #2.负载信息 load1=`uptime | awk -F'[ ,]+' '{print $(NF-2)}'` load5=`uptime | awk -F'[ ,]+' '{print $(NF-1)}'` load15=`uptime | awk -F'[ ,]+' '{print $(NF)}'` echo "系统负载信息," echo "最近1分钟负载,${load1}" echo "最近5分钟负载,${load5}" echo "最近15分钟负载,${load15}" #3.内存信息 mem_total=`free -m | awk 'NR==2{print $2}'` mem_used=`free -m | awk 'NR==2{print $3}'` mem_used_percent=`free -m | awk 'NR==2{print $3/$2*100"%"}'` echo "内存信息," echo "总计内存,${mem_total}MB" echo "已用内存,${mem_used}MB" echo "内存使用率,${mem_used_percent}" #4.swap信息 swap_total=`free -m | awk 'NR==3{print $2}'` swap_used=`free -m | awk 'NR==3{print $3}'` swap_used_percent=`free -m | awk 'NR==3{print $3/$2*100"%"}'` echo "swap信息," echo "swap总大小,${swap_total}MB" echo "swap使用大小,${swap_used}" echo "swap使用率,${swap_used_percent}" #5.磁盘信息 disk_count=`fdisk -l 2>/dev/null| grep '/dev/sd[a-z]:' | wc -l` root_total_size=`df -h | awk '$NF=="/"{print $2}'` root_used_percent=`df -h | awk '$NF=="/"{print $5}'` echo "磁盘信息," echo "硬盘数量,${disk_count}" echo "根分区大小,${root_total_size}" echo "根分区使用率,${root_used_percent}" #6.进程信息 proc_total=`top -b -n1 | awk 'NR==2{print $2}'` proc_running=`top -b -n1 | awk 'NR==2{print $4}'` proc_stopped=`top -b -n1 | awk 'NR==2{print $(NF-3)}'` proc_zombine=`top -b -n1 | awk 'NR==2{print $(NF-1)}'` echo "进程信息," echo "进程总数,${proc_total}" echo "运行中的进程数,${proc_running}" echo "挂起的进程数量,${proc_stopped}" echo "僵尸进程数量,${proc_zombine}"bash sys_info_85_day26_v2_csv.sh >result-linux.txt iconv -f utf8 -t gbk result-linux.txt -o result-linux.csvendl
2024年11月12日
4 阅读
0 评论
0 点赞
1
2
...
4