作用
-
二进制包:源码包经过成功编译之后产生的包
-
优点:由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快
-
注意:在生产环境中通用二进制包安装方法较为常用
软件包下载
根据上图系统参数里的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
简介
-
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即以上版本的支持
-
适用于新手