DBA数据库运维-MySQL安装篇(glibc,源码)

1. MySQL数据库版本

版本 说明
社区版:
MySQL Community Edition (GPL)
1.可以看做是企业版的“广泛体验版(小白鼠版)",未经各个专有系统平台的压力和性能测试 2.基于GPL协议发布,可以随意下载使用 3.没有任何官方技术支持服务
企业版:
MySQL Enterprise Edition(commercial)
1.提供了比较全面的高级功能、管理工具及技术支持 2.安全性、稳定性、可扩展性比较好
集群版:
MySQL Cluster CGE(commercial)
社区版可集群;企业版可集群

2. 版本命名方式

版本 说明
a (Alpha) 版 内测版,内部交流或者专业测试人员测试用。Bug较多,普通用户最好不要安装。
β(Beta) 版 公测版,专业爱好者大规模测试用,存在一些缺陷,该版本也不适合一般用户安装。
y(Gamma )版 相当成熟的测试版,与即将发行的正式版相差无几。
Final 正式版本
Free 自由版本
Release 发行版本
Standard 标准版本
Mini 迷你精简版本,只有最基本的功能
Upgrade 升级版本
GA(GenerallyAvailable) 开发团队认为该版本是稳定版,可以在较为关键的场合使用。
Retail 零售版

3. MySQL安装

3.1 三种安装方式

RPM版本
命名:MySQL-server-5.6.31-1.el7.x86_64.rpm[,需要在特定linux版本下安装。

基于glibc版本
命名:mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz
依赖 glibc库,可以安装在通用的Linux系统下

源代码编译安装
命名:mysql-5.6.35.tar.gz,通用的Linux下都可以编译安装。

三种安装方式比较

安装方式 优点 缺点
rpm安装 卸载简单 可定制性差
基于glibc安装 可定制性相比rpm包灵活些 安装相比rpm包复杂些,需要手动初始化数据库
源代码编译安装 可定制性最强,根据需求和功能定制 安装麻烦,需要手动初始化数据库

3.2 基于glibc安装MySQL

安装文档
版本下载: mysql-5.7.42-linux-glibc2.12-x86_64

DBA数据库运维-MySQL安装篇(glibc,源码)_第1张图片
安装步骤
本文mysql基目录(家目录):/usr/local/mysql
本文mysql数据目录:/usr/local/mysql/data

 # 1.创建用户组和用户
 groupadd mysql
 #useradd  mysql -r -s /sbin/nologin
 useradd -r -g mysql -s /bin/false mysql
 
 # 2.安装 mysql-5.7.42-linux-glibc2.12-x86_64
 mkdir /usr/local/mysql
 cd /usr/local/mysql
 tar zxvf mysql-5.7.42-linux-glibc2.12-x86_64.tar
 cp -a mysql-5.7.42-linux-glibc2.12-x86_64/*  ..
 
 # 3.更改mysql安装目录的所属组和所属用户
 chown -R mysql:mysql /usr/local/mysql
 
 # 4. Mysql启动,需要读取my.cnf,也需要读取数据目录的表文件,所以首次启动要初始化数据库
 ## 检查mysql家目录是否存在my.cnf
 ## 检查mysql数据目录是否存在my.cnf 
 ## 检查/etc/my.cnf是否存在,若存在且是默认mariadb的my.cnf,就删除掉该文件 cat /etc/my.cnf 
 ## 初始化数据库
	bin/mysqld --initialize --user=mysql
 ## 初始化之后,日志中给出默认密码,需要记录一下
 
 # 5. 拷贝启动脚本,启动数据库
	cp support-files/mysql.server /etc/init.d/mysql.server
	service mysql.server start
 # 6. mysql执行脚本加入环境变量
	vim /etc/profile
	export PATH=$PATH:/usr/local/mysql/bin
	source /etc/profile
# 7. 安全初始化数据库
##密码验证插件安装、禁止匿名登录? 禁止管理员账号远程登录? 删除测试库? 刷新权限表?
	bin/mysql_secure_installation

检查mysql启动状态

[root@node3 mysql]# ss -naltp|grep mysqld

3.3 基于源代码安装MySQL

  1. 安装需求
  2. 安装cmake 和 ncurses:
    yum -y install ncurses-devel cmake
  3. MySQL源码下载 ,放入合适位置 /usr/local/mysql_source
    DBA数据库运维-MySQL安装篇(glibc,源码)_第2张图片
  4. 编写/usr/local/mysql_source/mysql-5.7.43/cmake.sh
	cmake .\
	-DCMAKE_INSTALL_PREFIX=/mysq131\
	-DMYSQL_DATADIR=/mysq131/data\
	-DMYSQL_TCP_PORT=3307\
	-DMYSQL_UNIX_ADDR=/mysq131/mysq131.sock\
	-DWITH_INNOBASE_STORAGE_ENGINE=1\
	-DWITH_PARTITION_STORAGE_ENGINE=1\
	-DWITH_FEDERATED_STORAGE_ENGINE=1\
	-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
	-DWITH_MYISAM_STORAGE_ENGINE=1\
	-DENABLED_LOCAL_INFILE=1\
	-DEXTRA_CHARSETS=all
	-DDEFAULT_CHARSET=utf8mb4\
	-DDEFAULT_COLLATION=utf8mb4_general_ci

     执行cmake.sh: ./cmake.sh

  1. MySQL编译和安装: make && make install
    不需要手动创建mysql基目录和数据目录,cmake.sh中已指定
  2. 进入mysql 家目录/usr/local/mysql_source/mysql-5.7.43,进行后续配置
# 1.更改mysql安装目录的所属组和所属用户
 cd /usr/local/mysql_source
 cp -a mysql-5.7.43/* ..
 chown -R mysql:mysql /usr/local/mysql_source
 
 # 2. Mysql启动,需要读取my.cnf
 ## 检查mysql基目录/usr/local/mysql_source是否存在my.cnf,存在就读取该my.cnf,然后执行初始化数据库命令
 ## 若单机安装多个mysql服务,建议每个基目录下放置my.cnf
 ## 检查mysql数据目录/usr/local/mysql_source/data是否存在my.cnf 
 ## 检查/etc/my.cnf是否存在,若存在且是默认mariadb的my.cnf,就删除掉该文件 cat /etc/my.cnf 
 ## 初始化数据库
	bin/mysqld --initialize --user=mysql
 ## 初始化之后,日志中给出默认密码,需要记录一下
 
 # 3. 拷贝启动脚本,启动数据库
	cp support-files/mysql.server /etc/init.d/mysql.server
	service mysql.server start
 # 4. 安全初始化数据库
 ##密码验证插件安装、禁止匿名登录? 禁止管理员账号远程登录? 删除测试库? 刷新权限表?
	bin/mysql_secure_installation
  1. 常用配置选项
配置选项 描述 默认值 建议值
CMAKE_INSTALL_PREFIX 安装基目录(basedir) /usr/local/mysql 根据需求
MYSQL_DATADIR 数据目录(datadir) 根据需求
SYSCONFDIR 默认配置文件my.cnf路径 /etc
MYSQL_TCP_PORT TCP/IP端口 3306 非默认端口
MYSQL_UNIX_ADDR 套接字socket文件路径 /tmp/mysql.sock $basedir/
DEFAULT_CHARSET 默认字符集 latin1 utf8mb4
DEFAULT_COLLATION 默认校验规则 latin1_swedish_ci utf8mb4_general_ci
WITH_EXTRA_CHARSETS 扩展字符集 all all
ENABLED_LOCAL_INFILE 是否启用本地加载外部数据文件功能 OFF 建议开启

存储引擎相关配置项
以下选项值均为布尔值,0或1,0代表不编译到服务器中,1代表编译,建议都静态编译到服务器中。其他的存储引擎可以根据实际需求在安装时通过WITH_XxxX_STORAGE_ENGINE=1的方式编译到服务器中。

参数名 参数说明
WITH_INNOBASE_STORAGE_ENGINE 将InnoDB存储引擎插件构建为静态模块编译到服务器中建议编译到服务器中。
WITH_PARTITION_STORAGE_ENGINE 是否支持分区
WITH_FEDERATED_STORAGE_ENGINE 本地数据库是否可以访问远程mysq1数据
WITH_BLACKHOLE_STORAGE_ENGINE 黑洞存储引擎,接收数据,但不存储,直接丢弃
WITH_MYISAM_STORAGE_ENGINE 将MYISAM存储引擎静态编译到服务器中

3.4 更改管理员root用户密码

① 已知旧密码修改新密码
修改新密码为123456
[root@node3 bin]# mysqladmin -uroot password ‘123456’ -p

② 已知旧密码,使用SQL语句修改密码

mysql> select host,user,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked from mysql.user;
mysql> alter user 'root'@'localhost' identified by '1qaz@WSX';
mysql> flush privileges;

③Shell终端安全初始化脚本

cd mysql家目录/bin
[root@node3 bin]# mysql_secure_installation

④忘记密码后重置密码
停止数据库
跳过授权表启动数据库
免密登录数据库,SQL语句修改数据库
刷新权限
启动数据库 : service mysql start

[root@node3 ~]# service mysql stop
Redirecting to /bin/systemctl stop mysql.service
[root@node3 ~]# mysqld_safe --skip-grant-tables --user=mysql&
[2] 22824
[root@node3 ~]# 2023-10-02T03:12:44.975972Z mysqld_safe Logging to '/usr/local/mysql/data/node3.itcast.cn.err'.
2023-10-02T03:12:45.082633Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
mysql> alter user 'root'@'localhost' identified by '1qaz@WSX';
mysql> flush privileges;

3.5 MySQL5.6.X 与 5.7.X修改密码的区别

MySQL5.6.X版本

mysql> update mysql.user set authentication_string = password('123456') where user='root' and host = 'localhost';
mysql> set password for 'root'@'localhost'=password('123456');

MySQL 5.7.X版本user表中已经没有password字段

mysql> set password for root@localhost = password('1qaz@WSX');
mysql> set password for 'root'@'localhost'='1qaz@WSX';
-- 推荐
mysql> alter user 'root'@'localhost' identified by '1qaz@WSX';

4. 客户端工具

4.1 mysql

用法:
bin/mysql [options][db_name]
options参数:
-u, --user=name:指定登录用户名
-p, --password:指定登录密码(注意是小写p),一定要放到最后面
-h, --host=name:指定数据库的主机地址
-P, --port=xxx:指定数据库的端口号(大写P)
-S, --socket=name:指定socket文件
-e, --execute=name:使用非交互式操作(在shell终端执行sql语句)

mysql客户端登录mysql服务

① 本地登录
mysql -uroot -p
mysql -uroot -p123456
② 指定本地或远端主机登录
mysql -uroot -hlocalhost -P3306 -p
mysql -uroot -hlocalhost -P3306 -p123456
③ shell终端使用SQL语句
mysql -uroot  -e "show databases;" -p123456
mysql -uroot -hlocalhost -P3306 -e "show databases;" -p123456
④ 使用socket文件登录
 mysql -uroot -S /tmp/mysql.sock -uroot -p123456
⑤ 单机>=1个mysql server实例,指定别名登录
alias startMysq1='mysql -S /tmp/mysq1.sock'
startMysq1 -uroot -p123456
不设置参数,默认root@localhost本地登录
startMysq1 -p

4.2 mysqladmin

mysqladmin [options]command [command-options]

options常用参数:
-h,–host=name 连接主机
-p,–password 密码
-P,–port=连接端口
-S,–socket=name指定socket文件
-u, --user=name指定用户名

常用命令:
password [new-password]更改密码
reload 刷新授权表
shutdown 停止mysql服务
status 简短查看数据库状态信息
start-slave 启动slave
stop-slave 停止slave
variables 打印可用变量
version 查看当前mysql数据库的版本信息

mysqladmin shutdown -uroot -p
mysqladmin shutdown -uroot -p123456
mysqladmin password '123456' -uroot -p123456
mysqladmin shutdown -uroot -p123456 -S /tmp/mysq1.sock
mysqladmin status -uroot -p123456 -S /tmp/mysq1.sock


alias startMysqladmin='mysqladmin -S /tmp/mysq1.sock'
startMysqladmin shutdown -uroot -p123456

5.MySQL启动过程

  1. 命令行启动数据库:
    ① service mysql start -> mysqld_safe -> mysqld daemon
    ② mysqld_safe [options] & -> mysqld daemon
        ex: mysqld_safe --user mysql
    脚本调用顺序:
         mysql 调用mysqld_safe,mysqld_safe调用mysqld ,所以①②两种方式启动,会有两个进程工作
    在这里插入图片描述
  2. 以上方式启动数据库读取相应配置文件顺序:
    $basedir(mysql安装目录)
    —> $datadir (mysql的数据目录)
    —> /etc/my.cnf
    –> /etc/mysql/my.cnf
    –> -/.my.cnf
//表示启动时给mysq1d程序传递相应参数
[mysq1d]
basedir= /usr/local/mysql 
datadir= /usr/local/mysql/data
port=3307
socket=/usr/local/mysql/mysql.sock
server_id=1
1og-error=/usr/local/mysql/err
pid-file=/usr/local/mysql/pid

//表示使用mysq1客户端工具连接mysq1数据库时传递相应参数
// 配置client标签,shell终端直接输入mysql,就可以启动
[client]
socket=/usr/local/mysql/mysql.sock
port=3307
password="123456"

// mysqld_safe启动数据库时传递的参数
[mysqld_safe

你可能感兴趣的:(数据库,数据库,dba,运维,mysql)