生产环境中使用通用二进制包安装

作用
  • 二进制包:源码包经过成功编译之后产生的包

  • 优点:由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快

  • 注意:在生产环境中通用二进制包安装方法较为常用

软件包下载

根据上图系统参数里的glibc版本cpu架构选择

  • Compressed TAR Archive:生产环境首选包(最小完整版)

    • 格式:.tar.xz 高压缩,体积小、传输快

    • 内容:仅运行 MySQL 必需文件(mysqld、客户端工具、库、配置模板、文档)

    • 剔除:调试程序、源码、完整测试套件、多余开发文件

    • 适用:自建服务器、容器、生产业务、运维标准二进制部署

  • Compressed TAR Archive, Test Suite:仅测试人员使用,生产完全不用下载

    • 内容:MySQL 官方自动化压力 / 功能测试用例、测试脚本、单元测试工具

    • 不含完整数据库服务端程序,单独下载无法启动 MySQL 服务

    • 适用:内核开发、DBA 做全量兼容性压测,普通业务部署直接忽略

  • TAR:无压缩原始大包,不推荐

    • 格式:.tar 无压缩,体积巨大,下载耗时、占用磁盘多

    • 内容:和第一个 xz 包内容完全一致,只是没有高压缩,包含完整 stripped 运行程序

    • 缺点:传输慢、备份占用空间大,无任何额外功能增益

    • 适用:内网离线环境无法解压 xz 格式的极端场景

使用xftp将软件包上传到根目录
解压缩
复制代码
[root@server /]# tar  -xvf  mysql-8.0.45-linux-glibc2.28-x86_64.tar.xz
​
[root@server /]# cd  mysql-8.0.45-linux-glibc2.28-x86_64
​
[root@server mysql-8.0.45-linux-glibc2.28-x86_64]# ls
bin  docs  include  lib  LICENSE  man  README  share  support-files
使用前的准备
复制代码
# 移动到默认安装目录,也可自行修改
[root@server mysql-8.0.45-linux-glibc2.28-x86_64] cd  /
​
[root@server /]# mv  mysql-8.0.45-linux-glibc2.28-x86_64  /usr/local/mysql
​
[root@server /]# cd /usr/local/mysql   
​
[root@server mysql]# groupadd mysql    # 创建名为mysql的用户组
​
# 创建mysql的系统用户,将其添加到mysql组中,并设置其不可登录,以限制该用户的登录权限
[root@server mysql]# useradd -r -g mysql -s /sbin/nologin mysql  
​
[root@server mysql]# mkdir data   # 创建用于存放MySQL数据文件目录
​
[root@server mysql]# chmod -R 750 data
​
# 设置mysql目录的账户及工作组,生产环境中不要使用root    
[root@server mysql]# chown -R mysql:mysql /usr/local/mysql 
初始化软件
复制代码
[root@server mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data # 注意:需要复制密码
​
[root@server mysql]# bin/mysqld_safe --user=mysql &  # 使用后台方式以mysql用户身份启动 MySQL 服务器,mysqld_safe 是一个用于启动和监控 MySQL 服务器的脚本
​
# 注意:此时上述命令执行完毕处于后台运行状态,需要另行启动一个终端
​
[root@server ~]# ps  -ef | grep  mysql   # 查看进程运行状态
​
[root@server ~]# cd /usr/local/mysql
​
[root@server mysql]# bin/mysql -u root -p   # 登录,可能报错
​
# 报错,需要找到下面的文件进行软连接
[root@server mysql]# ln -s /usr/lib64/libncurses.so.6.3 /usr/lib64/libncurses.so.5
​
[root@server mysql]# ln -s /usr/lib64/libtinfo.so.6.3 /usr/lib64/libtinfo.so.5
​
[root@server mysql]# bin/mysql -u root -p
Enter password:   # 粘贴之前的初始密码
​
mysql> alter  user 'root'@'localhost'  identified  with  mysql_native_password by '123456';  修改密码
​
mysql> flush privileges;   # 刷新
​
mysql> use mysql;  # 查看账户信息
​
mysql> select user, host, plugin from mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session    | localhost | caching_sha2_password |
| mysql.sys        | localhost | caching_sha2_password |
| root             | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
​
mysql>exit
​
[root@server mysql]# ps -ef | grep mysql
​
[root@server mysql]# kill  -9  pid号   # 在当前终端关闭运行的mysql
设置mysql的配置文件
复制代码
# 回到之前的终端,敲一个回车,显示进程以杀死
[root@server mysql]# vim /etc/my.cnf  # 新建配置文件,输入以下内容:
[client]
port = 3306
socket = /tmp/mysql.sock
​
[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
tmpdir = /tmp
socket = /tmp/mysql.sock
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
default-storage-engine=INNODB
log_error = error.log
​
# 注意:以下是上述配置文件的解释
[client]      # 客户端设置
port = 3306   # 默认端口号
socket = /tmp/mysql.sock   # 启动套接字 
​
[mysqld]
###############################基础设置#####################################
​
port = 3306        # 端口号 3306
basedir = /usr/local/mysql     # mysql安装根目录
datadir = /usr/local/mysql/data    # mysql数据文件所在位置 没有改目录则创建
tmpdir = /tmp    # 临时目录 比如load data infile会用到
socket = /tmp/mysql.sock   # 设置socke文件所在目录
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
default-storage-engine=INNODB
###############################日志设置#####################################
#数据库错误日志文件
log_error = error.log
配置启动脚本
复制代码
[root@master mysql]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target remote-fs.target nss-lookup.target
​
[Service]
Type=notify
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65535
LimitNPROC=65535
Restart=on-failure
RestartPreventExitStatus=1
TimeoutSec=0
​
[Install]
WantedBy=multi-user.target
​
[root@master mysql]# systemctl daemon-reload
[root@master mysql]# systemctl enable --now mysqld.service
设置mysql命令识别
复制代码
[root@server mysql]# vim  ~/.bash_profile   # 设置环境变量需添加如下语句
export PATH=$PATH:/usr/local/mysql/bin
​
[root@server mysql]# source  ~/.bash_profile
测试
复制代码
[root@server mysql]# mysql -V
mysql  Ver 8.0.45 for Linux on x86_64 (MySQL Community Server - GPL)
​
[root@server mysql]# systemctl is-active mysqld
active
​
[root@server ~]# mysql  -uroot -p
Enter password:
​
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)
​
mysql> exit

安装navicat

简介
预处理
  • 默认mysql的用户不允许远程连接,则需要更改为允许连接,但在生产环境中一般不推荐开启允许远程连接,若只有本机连接,可以不做
复制代码
mysql> use mysql;
​
mysql> select host,user from user;
​
mysql> update user set host='%' where user = 'root';   # %为任意 IP、任意主机
​
mysql> flush  privileges;
​
mysql> select host,user from user;
新建navicat连接
  • 连接->mysql

  • 注意:密码为登录mysql的密码123456

安装Mycli神器(可选)

简介
  • MySQL命令行不支持补全的,输入了错误的命令之后,由于命令行操作习惯,按ctrl+c想要取消时,就会退出MySQL命令行工具,只能再次连接,想要删除错误的命令也不方便

  • MyCLI 是一个易于使用的命令行客户端,可用于受欢迎的数据库管理系统 MySQL、MariaDB 和 Percona,支持自动补全和语法高亮。它是使用 prompt_toolkit库写的,需要python3.6+ 的支持。

官网
安装
复制代码
# 安装pip
[root@server ~]# yum install  pip -y
复制代码
# 改变python的pip源仓库
[root@server ~]# mkdir  .pip
[root@server ~]# vim  ~/.pip/pip.conf   # 粘贴如下内容:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
​
[install]
trusted-host=mirrors.aliyun.com
复制代码
# 安装mycli
[root@server ~]# pip  install mycli
设置多行编写
  • 因为mycli默认用回车执行sql语句,而不是用分号+回车,导致不能多行书写,解决办法:
复制代码
[root@server ~]# vim ~/.myclirc 
multi_line = True   # False改为True
​
# 或者登录后按下F3键
登录使用
复制代码
# 格式1:
[root@server ~]# mycli -u root       # 若无密码则不写-p
MySQL root@(none):(none)>            # 主机名为none,使用的数据库为none
​
# 格式2:
[root@server ~]# mycli -uroot -h localhost        #-uroot  可以连着写
​
# 格式3:
 mycli -u 用户名 -h 远程服务器  -p密码  -P 3306      # 注意-p后无空格
复制代码
# 演示
[root@server ~]# mycli -u root -h localhost
MySQL root@localhost:(none)> create database temp;
Query OK, 1 row affected
Time: 0.006s
​
MySQL root@localhost:(none)> use temp;
You are now connected to database "temp" as user "root"
Time: 0.001s
​
MySQL root@localhost:temp> create table tmp1( id int(8),
                        -> name varchar(30),
                        -> age int(3)
                        -> );
​
MySQL root@localhost:temp> insert into tmp1 value(1001,"zhangsan",18);
Query OK, 1 row affected
Time: 0.004s
​
MySQL root@localhost:temp> insert into tmp1 value(1002,"lisi",20);
Query OK, 1 row affected
Time: 0.007s
​
MySQL root@localhost:temp> insert into tmp1 value(1003,"wangwu",22);
Query OK, 1 row affected
Time: 0.003s
​
MySQL root@localhost:temp> select * from tmp1;
+------+----------+-----+
| id   | name     | age |
+------+----------+-----+
| 1001 | zhangsan | 18  |
| 1002 | lisi     | 20  |
| 1003 | wangwu   | 22  |
+------+----------+-----+
​
3 rows in set
Time: 0.017s
MySQL root@localhost:temp> exit
Goodbye!
注意
  • mycli是一款mysql的客户端命令行工具

  • mycli需要python3.6即以上版本的支持

  • 适用于新手

相关推荐
蓝田~7 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
Herbert_hwt7 小时前
MySQL学习前言:关于MySQL的历史与当下学习的必要性
mysql
时间的拾荒人8 小时前
MySQL 视图详解
android·数据库·mysql
尽兴-9 小时前
企业数据库选型与演进:Oracle、达梦、MySQL 与分库分表实践
数据库·mysql·oracle·分库分表
IT瑞先生10 小时前
Docker快速部署Mysql的三种方法——实操篇
mysql·adb·docker
数据库小学妹11 小时前
MySQL在线DDL实战:ALGORITHM三种算法对比+gh-ost变更管理SOP
mysql·dba·数据库运维·在线ddl·mdl锁·sql变更管理
Ethan010712 小时前
隔离级别管读,乐观锁管写——RC/RR 与写冲突的本质
mysql
熊文豪13 小时前
【金仓数据库征文】不装中间件的 MySQL→金仓在线迁移,mysql_fdw 全流程,和一个差点漏掉的 emoji
数据库·mysql·中间件·电科金仓
C++、Java和Python的菜鸟13 小时前
第5章 后端Web基础 (MySQL基础)
前端·mysql·adb