• 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

    在这里插入图片描述
    安装步骤
    本文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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    检查mysql启动状态

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

    3.3 基于源代码安装MySQL

    1. 安装需求
    2. 安装cmake 和 ncurses:
      yum -y install ncurses-devel cmake
    3. MySQL源码下载 ,放入合适位置 /usr/local/mysql_source
      在这里插入图片描述
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

         执行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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    1. 常用配置选项
    配置选项描述默认值建议值
    CMAKE_INSTALL_PREFIX安装基目录(basedir)/usr/local/mysql根据需求
    MYSQL_DATADIR数据目录(datadir)根据需求
    SYSCONFDIR默认配置文件my.cnf路径/etc
    MYSQL_TCP_PORTTCP/IP端口3306非默认端口
    MYSQL_UNIX_ADDR套接字socket文件路径/tmp/mysql.sock$basedir/
    DEFAULT_CHARSET默认字符集latin1utf8mb4
    DEFAULT_COLLATION默认校验规则latin1_swedish_ciutf8mb4_general_ci
    WITH_EXTRA_CHARSETS扩展字符集allall
    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;
    
    • 1
    • 2
    • 3

    ③Shell终端安全初始化脚本

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

    ④忘记密码后重置密码
    停止数据库
    跳过授权表启动数据库
    免密登录数据库,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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    mysql> alter user 'root'@'localhost' identified by '1qaz@WSX';
    mysql> flush privileges;
    
    • 1
    • 2

    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');
    
    • 1
    • 2

    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';
    
    • 1
    • 2
    • 3
    • 4

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    SpringBoot之公共字段can‘t find referenced pointcut autoFillPointCut
    leetcode229. 多数元素 II(java)
    SwiftUI 4.0 中原生图表(Charts)实现超长内容滚动功能
    Python爬虫实战,requests+re模块,Python实现爬取豆瓣电影《魔女2》影评
    AbortController中止请求通信[模糊搜索案例]
    ASPICE标准快速掌握「5.2. ASPICE与V模型」
    学习c#的第二十一天
    地理探测器Geodetector下载、使用、结果分析方法
    39. 组合总和
    视频汇聚/视频云存储/视频监控管理平台EasyCVR启动时打印starting server:listen tcp,该如何解决?
  • 原文地址:https://blog.csdn.net/weixin_37536020/article/details/133418694