Linux——安装软件(mysql)

一、应用部署:

  1. 安装软件 运行某个程序或者服务
    1. 安装软件包
      • dnf/yum 包安装工具
      • 官方网站提供的集成软件包
      • 源码编译安装      // 源码编译的步骤 只应用于编译型语言 对于解释性语言编写的程序 采用不用的方式打包
          1. 编译型语言编写的程序: nginx
          2. 解释性语言编写的程序:ansible   dnf
        1. 配置程序编译的参数
        2. 编译 根据第一步配置完成源码到二进制程序的编译  make
        3. 安装   make install
        4. 安装后配置步骤
    2. 容器化应用   镜像
  2. 修改配置
  3. 测试功能

例、mysql

mysql官方源码编译安装的步骤:

https://dev.mysql.com/doc/refman/8.4/en/source-installation.html

mysql源码编译的前置条件:

  1. cmake  一个全平台通用的编译框架,很多软件都是用cmake 完成编译环境配置
  2. make   编译工具   在很多平台上都可以直接安装make工具,mysql 安装时推荐使用GNU make  在有些平台上make命令是gmake 命令的别名    make 程序的版本最好在3.7.5以上
  3. mysql 8.4 使用了部分C++17的特性,最好升级c++17以体验更佳完成功能
    1. linux 操作系统   gcc10
  4. mysql 在编译时 还需要使用c++ 或者 c99 编译器
  5. mysql 8.0 开始所有的链接默认开启加密,所以编译时需要获取ssl 函数库的支持   openssl 以及 openssl-devel
  6. 还需要一个boost c++ 库,但是从mysql 8.3 开始源码包自带boost 代码
  7. ncurses 函数库 ncurses ncurses-devel
  8. 保证有充足的内存空间
  9. 测试脚本需要使用perl语言
  10. 源码包的解压工具
  11. bison > 2.1
  12. m4  
[root@bogon packages]# dnf -y install gcc gcc-c++ make 
[root@bogon bison-3.6.2]# pwd 
/usr/src/bison-3.6.2
[root@bogon bison-3.6.2]# dnf -y install m4     //bison 软件依赖
[root@bogon bison-3.6.2]# ./configure   // 观察输出是否提示缺少依赖库

在源码编译时,缺少依赖如何解决?

  1. yum provides */提示缺少的文件名
  2. 上网百度

进行bison的编译安装
[root@bogon bison-3.6.2]# make -j 2 && make install
[root@bogon bison-3.6.2]# bison --version 
bison (GNU Bison) 3.6.2
Written by Robert Corbett and Richard Stallman.

Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

#### bison依赖安装完毕 ######

#### 安装cmake 编译框架 #####
[root@bogon bison-3.6.2]# cd /root/packages/
[root@bogon packages]# ls 
bison-3.6.2.tar.gz  cmake-3.30.2.tar.gz  mysql-8.4.2.tar.gz
[root@bogon packages]# tar -zxf cmake-3.30.2.tar.gz -C /usr/src/
[root@bogon packages]# cd /usr/src/cmake-3.30.2/
[root@bogon cmake-3.30.2]# ./bootstrap 

[root@bogon cmake-3.30.2]# dnf -y install openssl openssl-devel 
[root@bogon cmake-3.30.2]# ./bootstrap 
[root@bogon cmake-3.30.2]# make -j 2 && make install 

提示 这一步有进度条

#### cmake 安装完毕 ####

### 开始进行mysql 源码编译安装 ####
[root@bogon ~]# dnf -y install ncurses ncurses-devel 
[root@bogon ~]# 
[root@bogon ~]# cd packages/
[root@bogon packages]# tar -xzf mysql-8.4.2.tar.gz -C /usr/src/
[root@bogon packages]# cd /usr/src/mysql-8.4.2/
[root@bogon mysql-8.4.2]# ls 
client           Doxyfile-ignored   libchangestreams  MYSQL_VERSION      scripts        testclients
cmake            Doxyfile.in        libmysql          mysys              share          unittest
CMakeLists.txt   doxygen_resources  libs              packaging          sql            utilities
components       extra              libservices       plugin             sql-common     vio
config.h.cmake   include            LICENSE           README             storage
configure.cmake  INSTALL            man               router             strings
Docs             libbinlogevents    mysql-test        run_doxygen.cmake  support-files
[root@bogon mysql-8.4.2]# mkdir build
[root@bogon mysql-8.4.2]# cd build/
# gcc 编译工具支持
[root@bogon build]# yum install gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc
# 依赖缺少
[root@bogon build]# dnf -y install libtirpc-devel
## 问题1: 这里的软件包安装不了
## 解决方案如下:
[root@bogon mysql]# dnf -y install epel-release 
Last metadata expiration check: 0:51:46 ago on Thu 29 Aug 2024 08:31:37 AM CST.
Package epel-release-9-7.el9.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@bogon mysql]# crb enable 
Enabling CRB repo
CRB repo is enabled and named: crb


[root@bogon build]# yum -y install rpcgen

清理cmake缓存
[root@bogon build]# rm -f CMakeCache.txt
cmake  .. 				// 指明软件代码路径
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 		// mysql 安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data 			// mysql 数据库目录
-DWITH_SSL=system 							// ssl 函数库位置 system使用系统默认
//此处值为路径时,指定ssl的安装路径
-DWITH_ZLIB=bundled 							// zlib 库的位置 使用源码库自带
// 值为路径时,指定zlib库的位置
-DWITH_INNOBASE_STORAGE_ENGINE=1 			// 安装时默认启动哪些存储引擎
// 启动innodb 存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 			
-DWITH_MYISAM_STORAGE_ENGINE=1 			
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DENABLED_LOCAL_INFILE=1 					// 启用infile支持
-DWITH_DEBUG=0 								// 使用启用debug 功能的
-DMYSQL_TCP_PORT=3306 						// mysql tcp端口号
-DMYSQL_UNIX_ADDR=/usr/local/mysq/l/run/mysqld.sock // mysql 套接字
-DDEFAULT_CHARSET=utf8mb4 					// 默认字符集
-DDEFAULT_COLLATION=utf8mb4_0900_ai_ci 		// 扩展字符集
-DWITH_SYSTEMD=1							// 启用systemd 支持 
[root@bogon build]# cmake  .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_SSL=system -DWITH_ZLIB=bundled -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_DEBUG=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysq/l/run/mysqld.sock -DDEFAULT_CHARSET=utf8mb4  -DDEFAULT_COLLATION=utf8mb4_0900_ai_ci -DWITH_SYSTEMD=1 

[root@bogon build]# make -j 2 

# make 编译过程中 因为意外或者任何原因中断编译,可以在编译目录下,重新运行make

#指令,继续在上一次中断的地方继续编译

# make 执行过程中 也会因为缺少依赖等报错

# 内存不足   通过free 查看内存使用情况  可用该内存大小不低于50M 则与内存无关

# 调用的逻辑核心数过多,为了加快编译速度而同时避免因为争抢CPU 资源出现问题,建

# 议调用核心数,相对于逻辑核心数减少1-2 (lscpu 查看CPU 基本信息)

# 清理编译缓存  make clean

[root@bogon build]# make install

// 检查安装指令执行结果

[root@bogon build]# echo $?

 二、安装后部署

1、创建程序用户账号(这一步可以在编译前完成)
[root@bogon build]#  groupadd mysql
[root@bogon build]# useradd -r -g mysql -s /bin/false mysql
2、确保mysql 相关目录的正确权限
[root@bogon build]# cd /usr/local/mysql/
[root@bogon mysql]# chown -R mysql.mysql /usr/local/mysql/
[root@bogon mysql]# mkdir mysql-files 
[root@bogon mysql]# chown mysql.mysql mysql-files/
[root@bogon mysql]# chmod 750 mysql-files/

3、初始化mysql 数据
[root@bogon mysql]# vim /etc/profile 
// 打开文件后,按下大写的GG 直接锁定文本最后一行,按下o开启新一行输出
PATH=$PATH:/usr/local/mysql/bin
// 然后保存退出,注意此文件修改错误,可能导致大量命令失效,谨慎修改
[root@bogon mysql]# source  /etc/profile   
[root@bogon mysql]# echo $PATH
/root/.local/bin:/root/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/usr/local/mysql/bin
[root@bogon mysql]# 
[root@bogon mysql]# mysqld --initialize --user=mysql 
2024-08-29T01:02:54.106027Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2024-08-29T01:02:54.116997Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.4.2-debug) initializing of server in progress as process 14917
2024-08-29T01:02:54.188591Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-08-29T01:02:55.289367Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-08-29T01:03:02.452228Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Kd:(#fUsS6H(   // 临时密码,每个人不一样

2024-08-29T01:03:16.607332Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
[root@bogon mysql]# 
[root@bogon mysql]# echo 'Kd:(#fUsS6H(' >> /root/root_temp
初始化后,出现data 目录

4、尝试启动mysql 进程
[root@bogon mysql]# mysqld_safe --user mysql &
[1] 15004
[root@bogon mysql]# Logging to '/usr/local/mysql/data/bogon.err'.
2024-08-29T01:06:06.747831Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

[root@bogon mysql]# ps -elf | grep mysql 
4 S root       15004    2171  0  80   0 - 55697 do_wai 09:06 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user mysql
4 S mysql      15108   15004 15  80   0 - 483905 do_pol 09:06 pts/0   00:00:04 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --user mysql --log-error=bogon.err --pid-file=bogon.pid
0 S root       15155    2171  0  80   0 - 55417 pipe_r 09:06 pts/0    00:00:00 grep --color=auto mysql
[root@bogon mysql]# mysql -u root -p$(cat /root/root_temp)
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 9
Server version: 8.4.2-debug

Copyright (c) 2000, 2024, 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> alter user root@localhost identified by 'redhat1~';   // 修改密码
Query OK, 0 rows affected (0.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.03 sec)

mysql> create database webapp;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| webapp             |
+--------------------+
5 rows in set (0.01 sec)

mysql> exit
Bye

5、使用systemctl 控制服务启动
[root@bogon mysql]# ls usr/lib/systemd/system/
mysqld.service  mysqld@.service  mysqlrouter.service
[root@bogon mysql]# cp  /usr/local/mysql/usr/lib/systemd/system/* /usr/lib/systemd/system/
[root@bogon mysql]# systemctl daemon-reload 
[root@bogon mysql]# killall mysqld
[root@bogon mysql]# killall mysqld
[root@bogon mysql]# 2024-08-29T01:13:04.137062Z mysqld_safe mysqld from pid file /usr/local/mysql/data/bogon.pid ended

[1]+  Done                    mysqld_safe --user mysql
[root@bogon mysql]# 
[root@bogon mysql]# pwd 
/usr/local/mysql
[root@bogon mysql]# ls run/
[root@bogon mysql]# ls data/*.pid
ls: cannot access 'data/*.pid': No such file or directory
[root@bogon mysql]# systemctl start mysqld.service
[root@bogon mysql]# systemctl status mysqld
● mysqld.service - MySQL Server
     Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; preset: disabled)
     Active: active (running) since Thu 2024-08-29 09:14:19 CST; 5s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
    Process: 15382 ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
   Main PID: 15448 (mysqld)
     Status: "Server is operational"
      Tasks: 35 (limit: 24434)
     Memory: 454.5M
        CPU: 12.488s
     CGroup: /system.slice/mysqld.service
             └─15448 /usr/local/mysql/bin/mysqld

Aug 29 09:14:16 bogon mysqld_pre_systemd[15411]: 2024-08-29T01:14:16.449419Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
Aug 29 09:14:16 bogon mysqld[15448]: 2024-08-29T01:14:16.501034Z 0 [System] [MY-015015] [Server] MySQL Server - start.
Aug 29 09:14:16 bogon mysqld[15448]: 2024-08-29T01:14:16.760249Z 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.4.2-debug) starting as>
Aug 29 09:14:16 bogon mysqld[15448]: 2024-08-29T01:14:16.782453Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
Aug 29 09:14:17 bogon mysqld[15448]: 2024-08-29T01:14:17.536247Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
Aug 29 09:14:19 bogon mysqld[15448]: 2024-08-29T01:14:19.481641Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
Aug 29 09:14:19 bogon mysqld[15448]: 2024-08-29T01:14:19.481734Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted conn>
Aug 29 09:14:19 bogon mysqld[15448]: 2024-08-29T01:14:19.751956Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 330>
Aug 29 09:14:19 bogon mysqld[15448]: 2024-08-29T01:14:19.753196Z 0 [System] [MY-010931] [Server] /usr/local/mysql/bin/mysqld: ready for connections. Version:>
Aug 29 09:14:19 bogon systemd[1]: Started MySQL Server.
[root@bogon mysql]# mysql -u root -p'redhat1~'
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 8
Server version: 8.4.2-debug Source distribution

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值