• Linux安装MySQL(源码安装)



    一、下载

    进入 MySQL官网
    在这里插入图片描述
    找到社区版
    在这里插入图片描述
    :单击进入MySQL社区版下载页面
    在这里插入图片描述
    在这里插入图片描述
    选择合适的版本

    在这里插入图片描述

    二、最小化安装配置

    1. 设置主机名称
    [root@localhost ~]# hostnamectl set-hostname MySQL
    [root@localhost ~]# su
    
    • 1
    • 2
    1. 更改IP获取方式为静态设置以及绑定主机名+IP到/etc/hosts
    # vi /etc/sysconfig/network-scripts/ifcfg-ens33
    
    TYPE="Ethernet"
    BOOTPROTO="static"
    IPADDR=192.168.44.100
    NETMASK=255.255.255.0
    GATEWAY=192.168.44.2
    DNS1=8.8.8.8
    DNS2=144.144.144.144
    NAME="ens33"
    DEVICE="ens33"
    ONBOOT="yes"
    
    # vi /etc/hosts
    192.168.44.100 MySQL
    
    # systemctl restart network
    如果是多网卡形式,建议使用ifdown与ifup
    # ifdown ens33
    # ifup ens33
    
    # ip a
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    1. 关闭防火墙和SELinux
    # systemctl stop firewalld
    # systemctl disable firewalld
    
    # setenforce 0
    # vim /etc/selinux/config
    SELINUX=disabled
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 配置国内公网yum源
      在这里插入图片描述
      找到centos
    安装wget命令
    # yum install wget -y
    备份官方yum源
    # mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    # 获取腾讯源
    # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
    清空yum缓存,重新建立
    # yum clean all
    # yum makecache
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 安装扩展软件(bash-completion自动补全、vim编辑器、net-tools网络工具包以及ntpdate时间同步工具)
     yum install bash-completion vim net-tools ntpdate -y
    
    • 1
    1. 时间同步
      时间同步网站

    在这里插入图片描述

    # ntpdate 111.230.50.201
    
    • 1

    三、MySQL的安装的几种方式

    1.MySQL安装方式

    二进制软件包安装

    ① yum安装或rpm安装(这篇博客有写

    glibc版本安装(相当于Windows中的绿色软件)

    命名:mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

    依赖[^glibc]库,可以安装在通用的Linux系统下

    源码包编译安装

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

    2. 三种安装方式的区别

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

    四、MySQL的GLIBC版本安装

    安装依赖库libaio库

    yum install libaio -y
    
    • 1

    1. 上传软件包解压

    [root@mysql ~]# tar -xf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
    [root@mysql ~]# ls mysql-5.7.39-linux-glibc2.12-x86_64
    bin  docs  include  lib  LICENSE  man  README  share  support-files
    
    • 1
    • 2
    • 3

    安装需求

    选项值(自定义也可以采用默认形式)
    安装路径/mysql_3306
    数据路径/mysql_3306/data
    端口号3306

    2. 软件安装

    官方文档

    在这里插入图片描述

    第一步:创建一个数据库专用账号mysql(其所属组也为mysql)

    # useradd -r -s /sbin/nologin mysql
    # id mysql
    
    • 1
    • 2

    第二步:清空系统中的原有mariadb的配置文件(/etc/my.cnf)

    # rm -rf /etc/my.cnf
    
    • 1

    第三步:把mysql解压后的压缩包(GBLIC版本)移动到/根目录下,然后更名为mysql_3306

    # mv mysql-5.7.31-linux-glibc2.12-x86_64 /mysql_3306
    
    • 1

    第四步:切换到mysql工作目录/mysql_3306,创建一个mysql-files

    # cd /mysql_3306
    # mkdir mysql-files
    
    • 1
    • 2

    第五步:更改mysql-files权限(设置文件拥有者和所属组)

    # chown mysql:mysql mysql-files
    # chmod 750 mysql-files
    
    • 1
    • 2

    第六步:初始化数据库(可以实现数据库的初始化,而且会产生一个随机密码

    # bin/mysqld --initialize --user=mysql --basedir=/mysql_3306
    选项说明:
    --initialize 	 初始化(真正开始干活)
    --user=mysql 	 以mysql用户的身份初始化数据库,产生文件都是mysql作为拥有者
    --basedir=xxx    mysql其安装目录,非常重要
    
    运行完毕后,观察最后一行,保存root账号的密码,以备后期使用。
    2022-08-27T02:25:02.991975Z 1 [Note] A temporary password is generated for root@localhost: F+Ife6N%*kao
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    想查看mysql软件有没有初始化成功,主要看mysql目录下有没有产生data文件夹且文件夹中至少要有一个mysql的文件夹

    第七步:设置安全加密连接(SSL),数据传输会采用加密形式,适合敏感数据

    # bin/mysql_ssl_rsa_setup --datadir=/mysql_3306/data
    
    • 1

    第八步:启动MySQL数据库

    # cp support-files/mysql.server /etc/init.d/mysql_3306
    
    • 1

    注意:默认情况下,GBLIC版本的数据库要求安装到/usr/local/mysql目录,其mysql.server脚本中对应的目录也是/usr/local/mysql,这会导致mysql无法启动。所以可以更改其basedir以及datadir两个变量

    # vim /etc/init.d/mysql_3306
    46行 basedir=/mysql_3306
    47行 datadir=/mysql_3306/data
    
    • 1
    • 2
    • 3

    第九步:启动MySQL数据库(不能使用systemctl,只能使用service)

    [root@mysql mysql_3306]# service mysql_3306 start
    Starting MySQL.Logging to '/mysql_3306/data/mysql.err'.
     SUCCESS!
    
    • 1
    • 2
    • 3

    特别说明:当MySQL启动成功后,其日志会自动写入到data数据目录中的主机名称.err文件中,这个文件一定要多看,涉及MySQL无法启动、启动报错,其详细的原因99%在.err文件中可以找到问题所在

    第十步:让mysql自动启动

    # chkconfig --list				查询系统中的所有开机启动项
    # chkconfig --add mysql_3306    必须与/etc/init.d目录下的脚本名称一致
    # chkconfig mysql_3306 on		把2345四种模式全部开启(3字符界面,5图形界面)
    
    • 1
    • 2
    • 3

    第十一步:把mysql客户端命令添加到环境变量,以后随时可以访问

    # echo 'export PATH=$PATH:/mysql_3306/bin' >> /etc/profile
    # source /etc/profile
    设置完成后,我们可以在任意位置调用mysql客户端命令
    
    # mysql -uroot -p
    输入密码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3. MySQL GLIBC版本后续配置

    第一步:更改管理员root账号的密码

    [root@node1 mysql_3306]# bin/mysqladmin -uroot password 'root' -p
    Enter password:输入刚刚初始化产生的临时密码
    
    • 1
    • 2

    登录后mysql修改密码

    mysql> set password='root';
    
    • 1

    第二步:手工定义MySQL的配置文件(非常重要)

    # vim /mysql_3306/my.cnf
    [mysqld]
    basedir=/mysql_3306
    datadir=/mysql_3306/data
    socket=/tmp/mysql.sock
    选项说明:
    [mysqld]	代表针对服务器端进行配置
    basedir		代表数据库的安装目录
    datadir		代表数据目录,以后专门用于存放数据文件的(核心目录)
    socket		代表套接字文件,专门为客户端与服务器端连接提供一个桥梁
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    重启MySQL

    # service mysql_3306 restart
    
    • 1

    第三步:安全配置(对于生产环境比较重要)

    除了第一个是否重新设置root密码直接回车,其它一路Y,搞定!

    # mysql_secure_installation
    
    • 1

    常见问题:如何关闭MySQL密码强度检测?

    # vim /mysql_3306/my.cnf
    [mysqld]
    ...
    validate_password=OFF
    
    # service mysql_3306 restart
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    五、MySQL的源码编译安装

    官方文档

    源码安装三步曲:配置——>编译——>安装

    1. 安装需求

    安装需求具体配置
    安装目录(baedir)/mysql_3307
    数据目录(datadir)/mysql_3307/data
    端口号3307
    socket文件位置$basedir/mysql.sock
    字符集utf8mb4

    常用配置选项

    配置选项描述默认值建议值
    CMAKE_INSTALL_PREFIX安装基目录(basedir)/usr/local/mysql根据需求
    MYSQL_DATADIR数据目录(datadir)$basedir/data根据需求
    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建议开启
    WITH_SSLSSL支持类型system建议显式指定
    WITH_BOOSTBoost库源代码的位置Boost库是构建MySQL所必需的,建议事先下载

    存储引擎相关配置项
    说明:

    以下选项值均为布尔值,0或1;0代表不编译到服务器中,1代表编译,建议都静态编译到服务器中。

    其他的存储引擎可以根据实际需求在安装时通过WITH_xxxx_STORAGE_ENGINE=1的方式编译到服务器中。

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

    2. MySQL的源码编译安装

    第一步:安装MySQL编译需要用到的依赖库

    # yum -y install ncurses-devel cmake libaio-devel openssl-devel
    
    • 1

    第二步:上传软件到服务器端并解压

    # tar -xf mysql-boost-5.7.31.tar.gz
    # cd mysql-5.7.31
    
    • 1
    • 2

    第三步:配置(基于cmake进行配置)

    # vim myconfig.sh
    cmake . \
    -DCMAKE_INSTALL_PREFIX=/mysql_3307 \
    -DMYSQL_DATADIR=/mysql_3307/data \
    -DMYSQL_TCP_PORT=3307 \
    -DMYSQL_UNIX_ADDR=/mysql_3307/mysql.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 \
    -DWITH_SSL=system \
    -DWITH_BOOST=boost
    
    选项说明:
    -DCMAKE_INSTALL_PREFIX :安装路径
    -DMYSQL_DATADIR :数据目录
    -DMYSQL_TCP_PORT :端口号
    -DMYSQL_UNIX_ADDR :套接字文件位置
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    执行配置文件

    # chmod +x myconfig.sh
    # ./myconfig.sh
    
    • 1
    • 2

    第四步:编译安装

    # make -j2 && make install
    选项说明:
    -j2 :代表同时开启多个线程共同实现编译操作
    
    • 1
    • 2
    • 3

    3. 编译报错常见问题解析

    问题1:没有boost导致安装失败

    在这里插入图片描述
    解决方案:只能重新编译一下

    # rm -f CMakeCache.txt
    # make -j2 && make install
    
    • 1
    • 2

    4. MySQL数据库的初始化

    注意:**进入到安装目录里/mysql_3307

    # cd /mysql_3307
    
    • 1

    第一步:创建mysql-files目录

    创建系统变量`secure_file_priv`限制导入导出目录并修改权限
    # mkdir mysql-files
    # chown -R mysql:mysql /mysql_3307
    # chmod 750 mysql-files
    
    • 1
    • 2
    • 3
    • 4

    第二步:数据库初始化操作

    # bin/mysqld --initialize --user=mysql --basedir=/mysql_3307 --datadir=/mysql_3307/data
    
    这个是密码
    2022-08-27T08:14:01.663647Z 1 [Note] A temporary password is generated for root@localhost: kHo5hDNdj0+z
    
    • 1
    • 2
    • 3
    • 4

    第三步:拷贝mysql.server脚本到/etc/init.d目录,然后启动数据库

    # cp support-files/mysql.server /etc/init.d/mysql_3307
    # service mysql_3307 start
    
    • 1
    • 2

    启动异常的解决方案:
    查看mysql.itcast.cn.err这个错误日志

    5. MySQL源码编译安装后的后续配置

    第一步:编写MySQL配置文件,my.cnf

    # vim /mysql_3307/my.cnf
    [mysqld]
    basedir=/mysql_3307
    datadir=/mysql_3307/data
    socket=/mysql_3307/mysql.sock
    
    重启数据库
    # service mysql_3307 restart
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    第二步:设置管理员的密码
    密码设置为root

    # bin/mysqladmin -uroot password 'root' -p
    Enter password:这里输入初始化数据库的时候的自动生成的密码
    
    • 1
    • 2

    第三步:安全设置

    # bin/mysql_secure_installation
    
    输入数据库设置的密码
    第一直接回车
    其它全选y
    
    • 1
    • 2
    • 3
    • 4
    • 5

    第四步:添加mysql_3307到开机启动项

    # chkconfig --add mysql_3307
    # chkconfig mysql_3307 on
    
    • 1
    • 2

    六、MySQL常见问题解决方案

    方法1:直接使用==对应的客户==端软件访问

    访问5.7.31版本数据库:
    [root@node1 ~]# /mysql_3306/bin/mysql -uroot -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.7.31 MySQL Community Server (GPL)
    
    访问5.7.31版本数据库:
    [root@node1 ~]# /mysql_3307/bin/mysql -uroot -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 7
    Server version: 5.7.31 Source distribution
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    方法二:**定义别名**的方式访问

    [root@mysql mysql_3307]# alias mysql_3306="/mysql_3306/bin/mysql"
    [root@mysql mysql_3307]# alias mysql_3307="/mysql_3307/bin/mysql"
    
    [root@mysql mysql_3307]# mysql_3306 -uroot -p
    
    [root@mysql mysql_3307]# mysql_3307 -uroot -p
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    忘记MySQL密码解决方案

    1.关闭数据库

    [root@node1 ~]# mysqladmin shutdown -p
    Enter password:输入密码
    
    • 1
    • 2

    2.跳过授权表启动
    这里以上面安装的 mysql_3306为例子

    # /mysql_3306/bin/mysqld --defaults-file=/mysql_3306/my.cnf --skip-grant-tables --skip-networking=on  --user=mysql &
    
    • 1
    1. 刷新授权表
    # mysql -uroot -p
    Enter password:什么都不要输入,直接回车即可
    mysql> flush privileges;
    
    
    • 1
    • 2
    • 3
    • 4

    4.修改密码

    mysql> alter user 'root'@'localhost' identified by '123';
    
    • 1

  • 相关阅读:
    Android 序列化框架 Gson 原理分析,可以优化吗?
    前端如何使网页变灰
    新晋“学霸”夸克大模型拿下C-Eval和CMMLU双榜第一
    【java学习—九】工厂方法FactoryMethod(6)
    CentOS7安装MongoDB
    算法(圆的定义和相关术语)
    Django drf的快速实战学习
    【目标检测】基于深度学习的植物中草药智能识别系统【python源码+Pyqt5界面+数据集+训练代码 MX_001期】
    《QT从基础到进阶·十五》用鼠标绘制矩形(QGraphicsView、QPainter、QGraphicsRectItem)
    字符集详解
  • 原文地址:https://blog.csdn.net/weixin_53946852/article/details/126537954