欢迎光临
我们一直在努力

MySQL 运维实战系列(一)二进制安装 Mysql 8.0

01 数据库服务概述

什么是数据库服务?

数据库是规范存储数据的服务程序,用于存储网站或App界面看不到的数据,支持快速、高效的数据调取。

数据库服务分类

类型特点代表产品
关系型数据库 数据存储类似Excel表格(库=文件,表=表格,字段/记录=行列) MySQL, MariaDB, Oracle, PostgreSQL
非关系型数据库 无表格结构限制 Redis(缓存型), MongoDB(文档型)
新型数据库 结合关系型与非关系型特点,支持分布式存储 OB, TiDB(兼容MySQL), 达梦, openGauss(兼容Oracle)

02 数据库服务安装部署(以MySQL为例)

安装方式对比

方式优点缺点
yum 简单 无法定制版本
rpm 可控 需要解决依赖
源码编译 灵活 慢、耗资源
二进制(推荐) 解压即用 需手动配置

二进制安装步骤(MySQL 8.0.36)

1. 操作系统环境准备

# 我用的centos7.9
# 关闭防火墙和SELinux
systemctl stop firewalld && systemctl disable firewalld
setenforce 0 # 关闭selinux setenforce: SELinux is disabled

# 创建管理用户和目录
useradd mysql -M -s /sbin/nologin
mkdir -p /data/3306/data
mkdir -p /data/3306/logs
chown -R mysql.mysql /data/3306/data /data/3306/logs
cd /usr/local/

# 安装数据库需要的依赖
yum install -y libaio-devel

1.1下载数据库安装包 MySQL 官方下载页面

2. 安装程序

# 下载好的安装包上传到 /usr/local
cd /usr/local
tar xf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
ln -s mysql-8.0.36-linux-glibc2.12-x86_64 mysql

# 配置环境变量
echo 'export PATH="$PATH:/usr/local/mysql/bin"' >> /etc/profile
source /etc/profile

# 验证版本
mysql -V

若系统中已有MariaDB/MySQL,需先卸载:

rpm -qa | grep -E "mariadb|mysql" | xargs rpm -e –nodeps
# –nodeps忽略依赖检查

mysql/bin 目录下的工具

分类命令作用使用场景
服务器启动与管理 mysqld MySQL 服务器主程序 直接启动数据库服务
mysqld_safe 安全的启动脚本,进程异常自动重启 生产环境推荐使用
mysqladmin 管理工具(查看状态、关闭服务等) 快速管理操作
客户端连接工具 mysql MySQL 命令行客户端 连接数据库执行 SQL 命令
mysqlshow 显示数据库、表、列信息 查看数据库结构
备份与恢复 mysqldump 逻辑备份工具(导出 SQL 文件) 最常用的备份工具
mysqlbinlog 解析二进制日志 增量备份、数据恢复
数据库检查与修复 mysqlcheck 检查、修复、优化表 维护数据库表
myisamchk MyISAM 表检查和修复 修复 MyISAM 引擎表
innochecksum 检查 InnoDB 表空间完整性 检测 InnoDB 文件损坏
安全与配置 mysql_secure_installation 安全配置向导 首次安装后加固安全
mysql_config_editor 加密保存登录凭据 避免密码明文
性能测试 mysqlslap 数据库压力测试工具 测试并发性能
错误诊断 perror 查看错误码含义 查看错误说明
升级工具 mysql_upgrade 升级数据库系统表 MySQL 版本升级后运行
3. 初始化设置

# 配置文件 /etc/my.cnf
cat > /etc/my.cnf << 'EOF'
[mysqld]
# 基础路径配置
basedir = /usr/local/mysql
datadir = /data/3306/data
socket = /tmp/mysql.sock
pid-file = /data/3306/data/mysqld.pid
port = 3306
user = mysql

# 错误日志(必须)
log-error = /data/3306/logs/mysqld.log

# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[client]
socket = /tmp/mysql.sock
port = 3306
default-character-set = utf8mb4

[mysql]
socket = /tmp/mysql.sock
port = 3306
default-character-set = utf8mb4
prompt = '\\\\u@\\\\h [\\\\d]> '
EOF

# 初始化(免密方式,推荐)
mysqld –defaults-file=/etc/my.cnf –initialize-insecure

4. 启动数据库(三种方法,推荐3)

# 1.命令方式
mysqld_safe –defaults-file=/etc/my.cnf &

# 2.脚本方式,mysql自带的脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
service mysqld start

# 3.设置系统服务(推荐)
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
systemctl enable mysqld # 先执行这个初始化
systemctl start mysqld


安装补充说明

  • 依赖问题:
    • Kylin系统:无需额外安装
    • CentOS 7.9:需安装 libaio-devel
  • 初始化密码:
    • –initialize 生成临时密码(记录在错误日志中)
    • –initialize-insecure 免密初始化(推荐练习)
  • 启动失败排查:
    • 查看错误日志:cat /data/3306/data/*.err
    • 检查 /etc/my.cnf 配置
    • 必要时重新初始化(注意备份数据)

03 数据库服务基础管理

1. 密码管理

设置密码:

# 命令行
mysqladmin -uroot password "1"
# 命令执行成功,两个警告 警告1:命令行输入密码不安全 警告2:密码明文传输
[root@db-centos-192 /usr/local]# mysqladmin -uroot password "1"
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

# 命令(数据库内)
# 无密码登录
mysql
alter user root@'localhost' identified by '1';

修改密码:

# 命令行
mysqladmin -uroot -p旧密码 password "新密码"

# 命令(数据库内)
alter user root@'localhost' identified by '1';

重置密码步骤:

# 1. 停止数据库
/etc/init.d/mysqld stop
# 确认关闭
ps -ef |grep mysql

# 2. 跳过授权表启动
mysqld –defaults-file=/etc/my.cnf –skip-grant-tables &

# 3. 连接数据库并重置密码
mysql
# 重新回复授权
flush privileges;
alter user root@'localhost' identified by '新密码';

# 4. 正常重启
pkill mysql
/etc/init.d/mysqld start


2. 连接管理

连接方式命令示例说明
本地连接 mysql -uroot -p123456 默认使用 /tmp/mysql.sock
远程连接 mysql -uroot -p123456 -h 10.0.0.52 -P 3306 需创建远程用户
创建远程用户示例:

create user root@'10.0.0.%' identified by '123456';
create user lottery@'172.16.1.%' identified by 'lottery';

  • 10.0.0.%:网段
  • 10.0.0.53:单IP
  • %:任意主机

推荐数据库远程连接工具:DBeaver(免费)、Navicat(付费)


3. 用户管理

— 创建
create user 'xiaoA'@'localhost' identified by '123456';

— 查看
select user, host from mysql.user;

— 修改密码
alter user 'xiaoA'@'localhost' identified by '新密码';

— 修改加密方式
alter user 'xiaoA'@'localhost' identified with mysql_native_password by '123456';

— 删除
drop user 'xiaoA'@'localhost';
— 或
delete from mysql.user where user='xiaoA';


4. 权限管理

常见权限
权限说明
select 查询数据
insert 插入数据
update 修改数据
delete 删除数据
create 创建库/表
drop 删除库/表
alter 修改表结构
show databases 查看数据库列表
授权与撤销

# *.* —> blog.book 表示blog库里的book表权限

— 授权
grant select, insert on *.* to 'root'@'10.0.0.%';

— 全部权限
grant all on *.* to 'root'@'10.0.0.%';

— 授权权限
grant grant option on *.* to 'root'@'10.0.0.%';

— 查看权限
show grants for 'root'@'10.0.0.%';

— 撤销权限
revoke insert on *.* from 'root'@'10.0.0.%';

特殊权限说明:

  • all:除 grant option 外的几乎所有权限
  • grant option:允许用户将自己拥有的权限授予他人
  • usage:默认权限,仅允许登录

赞(0)
未经允许不得转载:171主机测评 » MySQL 运维实战系列(一)二进制安装 Mysql 8.0
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址