MySQL 5.7.33 编译安装

Posted developer honor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 5.7.33 编译安装相关的知识,希望对你有一定的参考价值。


mysql 5.7.33 安装指南


微信公众号:DeveloperHonor

如果有什么问题或建议,请公众号留言;

如果您喜欢该公众号,请关注吧 !

MySQL 简介

  • MySQL 是一个数据库管理系统

  • 数据库是由数据的集合构成。

  • MySQL 是关系型数据库

  • 关系型数据库存储数据在单独的一系列表中,而不是将数据存储在一个大的存储空间中。数据库的结构是被组织在快速的优化后的物理文件中。逻辑模型和对象如数据库、表、视图、行和列,提供了灵活的编程环境。

    MySQL 的 SQL 部分是标准的 "Structured Query Language"。SQL 是用来访问数据库的最标准的语言。当然,这取决于你的编程环境。

  • MySQL 软件是开源的

  • 开源意味着它可以被任何人修改软件。MySQL 软件使用 GPL(GUN General Public License)开源协议。

  • MySQL 数据库具有快速、可靠、易扩展、和易使用的特性

  • MySQL 服务器可以运行在桌面或者笔记本与其它应用程序,web服务器等。

  • MySQL 运行在C/S或者嵌入式系统中

  • MySQL 数据库软件是一个 C/S 架构的系统,由多个 MySQL 服务器构成以支持不同的后端平台。若干个不同的客户端应用程序和库,管理工具也支持应用程序中的API接口。

  • MySQL 具有完善的生态体系

  • MySQL 具有完善的生态体系,如MySQL审计,MySQL 监控等。

MySQL 编译安装

编译环境

  • 操作系统

  • CentOS 7.9

  • MySQL版本

  • MySQL 5.7.33

上传 MySQL 安装包并解压

[root@developerhonor ~]ls
mysql-boost-5.7.33.tar.gz
[root@developerhonor ~]tar -zxf mysql-boost-5.7.33.tar.gz 
[root@developerhonor ~]ls
mysql-5.7.33  mysql-boost-5.7.33.tar.gz

安装依赖请求

  • make 版本不小于3.75

[root@developerhonor ~]# make --version
GNU Make 3.82
Built for x86_64-redhat-linux-gnu
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.   
  • openssl 支持


  • ncurse 库支持


  • 足够的内存支持

  • 如果没有足够的内存支持,将无法正常完成编译工作


  • bison 2.1 或者更高

  • libevent2.1以上或者更高

安装依赖包

#编译安装 editline
[root@developerhonor ~]# tar -zxf editline-1.17.1.tar.gz 
[root@developerhonor ~]# cd editline-1.17.1
[root@developerhonor editline-1.17.1]# ./configure && make -j24 && make install -j24

#编译安装libevent
[root@developerhonor ~]# tar -zxf libevent-release-2.1.12-stable.tar.gz 
[root@developerhonor ~]# cd libevent-release-2.1.12-stable
[root@developerhonor libevent-release-2.1.12-stable]# ./autogen.sh && ./configure && make -j24 && make install -j24

#安装其它依赖
[root@developerhonor build]# yum install -y cmake \
> openssl \
> openssl-devel \
readline \
readline-devel \
> lz4 \
> lz4-devel \
> openldap \
> openldap-devel \
> pam \
> pam-devel \
> libcurl \
> libcurl-devel \
> protobuf \
> protobuf-devel

编译安装 MySQL

#创建 MySQL 用户和用户组
[root@developerhonor ~]# groupadd mysql
[root@developerhonor ~]# useradd -r -g mysql -s /bin/false mysql
[root@developerhonor ~]# echo mysql | passwd --stdin mysql

#创建编译目录并切换到该目录
[root@developerhonor mysql-5.7.33]# mkdir build
[root@developerhonor mysql-5.7.33]# cd build/

#执行 cmake 编译相关文件到新建的 build 目录
[root@developerhonor build]# cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/root/mysql-5.7.33/boost/boost_1_59_0 \
-DENABLE_GCOV=1 \
-DENABLE_GPROF=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_PROFILING=1 \
-DIGNORE_AIO_CHECK=0 \
-DMAX_INDEXES=128 \
-DMUTEX_TYPE=event \
-DMYSQLX_TCP_PORT=33060 \
-DMYSQLX_UNIX_ADDR=/tmp/mysqlx.sock \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp \
-DOPTIMIZER_TRACE=1 \
-DREPRODUCIBLE_BUILD=1 \
-DWITH_AUTHENTICATION_LDAP=1 \
-DWITH_AUTHENTICATION_PAM=1 \
-DWITH_CLIENT_PROTOCOL_TRACING=1 \
-DWITH_CURL=system \
-DWITH_DEFAULT_FEATURE_SET=1 \
-DWITH_EDITLINE=bundled \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_EMBEDDED_SHARED_LIBRARY=1 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNODB_MEMCACHED=1 \
-DWITH_LIBEVENT=system \
-DWITH_LZ4=system \
-DWITH_PROTOBUF=bundled \
-DWITH_RAPID=1 \
-DWITH_SSL=system \
-DWITH_SYSTEMD=1 \
-DWITH_UNIT_TESTS=1 \
-DWITH_UNIXODBC=1 \
-DWITH_ZLIB=system \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DINSTALL_BINDIR=/usr/local/mysql/bin \
-DINSTALL_DOCDIR=/usr/local/mysql/docs \
-DINSTALL_DOCREADMEDIR=/usr/local/mysql \
-DINSTALL_INCLUDEDIR=/usr/local/mysql/include \
-DINSTALL_INFODIR=/usr/local/mysql/docs \
-DINSTALL_LIBDIR=/usr/local/mysql/lib \
-DINSTALL_MANDIR=/usr/local/mysql/man \
-DINSTALL_MYSQLSHAREDIR=/usr/local/mysql/share \
-DINSTALL_PKGCONFIGDIR=/usr/local/mysql/lib/pkgconfig \
-DINSTALL_PLUGINDIR=/usr/local/mysql/lib/plugin \
-DINSTALL_SBINDIR=/usr/local/mysql/bin \
-DINSTALL_SCRIPTDIR=/usr/local/mysql/scripts \
-DINSTALL_SHAREDIR=/usr/local/mysql/share \
-DINSTALL_SUPPORTFILESDIR=/usr/local/mysql/support-files \
-DWITH_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

#以下为输出部分
-- CMAKE_CXX_LINK_FLAGS:  -Wl,--build-id=none -Wl,--build-id=none
-- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -pg -fdebug-prefix-map=/root/mysql-5.7.33/=./ -fdebug-prefix-map=/root/mysql-5.7.33/build=./obj -gno-record-gcc-switches -DDBUG_OFF
-- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -pg -fdebug-prefix-map=/root/mysql-5.7.33/=./ -fdebug-prefix-map=/root/mysql-5.7.33/build=./obj -gno-record-gcc-switches -DDBUG_OFF
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    EFAULT_CHARSET
    IGNORE_AIO_CHECK
    MUTEX_TYPE
    WITH_AUTHENTICATION_PAM
    WITH_UNIXODBC


-- Build files have been written to: /root/mysql-5.7.33/build


#执行编译安装

[root@developerhonor build]# make -j24
----------输出部分内容-----------------
[ 98%] Built target mysql_client_test_embedded
Linking CXX static library ../archive_output_directory/libsql.a
[ 98%] Built target sql
Scanning dependencies of target mysqld
[100%] Building CXX object sql/CMakeFiles/mysqld.dir/main.cc.o
Scanning dependencies of target pfs_connect_attr-t
Linking CXX executable mysqld
[100%] [100%] [100%] Building CXX object storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/pfs_connect_attr-t.cc.o
Building CXX object storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/__/__/__/sql/sql_builtin.cc.o
Building C object storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/__/__/__/mysys/string.c.o
Linking CXX executable pfs_connect_attr-t
[100%] Built target mysqld
[100%] Built target pfs_connect_attr-t

#执行安装
[root@developerhonor build]# make install -j24
----------输出部分内容-----------------
-- Up-to-date: /usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- Installing: /usr/local/mysql/mysql-test/lib/My/SafeProcess/Base.pm
-- Installing: /usr/local/mysql/support-files/mysqld_multi.server
-- Installing: /usr/local/mysql/support-files/mysql-log-rotate
-- Installing: /usr/local/mysql/support-files/magic
-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server
#安装完成

基本配置

切换到安装目录

[root@developerhonor build]# cd /usr/local/mysql/
[root@developerhonor mysql]#
#创建 mysql 文件目录并授权
[root@developerhonor mysql]# mkdir mysql-files
[root@developerhonor mysql]# chown mysql.mysql -R mysql-files/
[root@developerhonor mysql]# chmod 750 -R mysql-files/

#配置 MySQL PATH路径到 .bashrc
[root@developerhonor bin]# tail -3 ~/.bashrc 
export MYSQLHOME=/usr/local/mysql
export MYSQLPATH=$MYSQLHOME/bin
export PATH=$MYSQLPATH:$PATH
[root@developerhonor bin]# . ~/.bashrc

配置 MySQL 配置文件 my.cnf

[root@developerhonor ~]# cat >/etc/my.cnf<<EOF
[client]
port = 3306
socket = /tmp/mysql.sock

[mysql]
no-auto-rehash

[mysqld]
user = mysql
port = 3306
basedir = /data/
datadir = /data/mysqldata
socket = /tmp/mysql.sock
character-set-server = utf8mb4
skip_name_resolve = 1
open_files_limit = 65535
back_log = 1024
max_connections = 512
max_connect_errors = 1000000
table_open_cache = 1024
table_definition_cache = 1024
table_open_cache_instances = 64
thread_stack = 512k
skip_external_locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 768
query_cache_size = 0
query_cache_type = 0
interactive_timeout = 600
wait_timeout = 600
tmp_table_size = 32M
max_heap_table_size = 32M
slow_query_log = 1
slow_query_log_file = /data/mysql/slowlog/slow.log
log_error = /data/mysql/error/error.log
long_query_time = 0.5
server_id = 100
log_bin = /data/mysql/log/binlog
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 1G
max_binlog_size = 1G
expire_logs_days = 7
master_info_repository = TABLE
relay_log_info_repository = TABLE
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates
binlog_format = row
relay_log_recovery = 1
relay-log-purge = 1
key_buffer_size = 32M
read_buffer_size = 8M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 64M
lock_wait_timeout = 3600
explicit_defaults_for_timestamp = 1
innodb_thread_concurrency = 0
innodb_sync_spin_loops = 100
innodb_spin_wait_delay = 30
transaction_isolation = REPEATABLE-READ
innodb_buffer_pool_size = 1024M
innodb_buffer_pool_instances = 8 
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 32M
innodb_log_file_size = 2G
innodb_log_files_in_group = 2
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_flush_neighbors = 0
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_open_files = 65535
innodb_max_dirty_pages_pct = 50
innodb_flush_method = O_DIRECT
innodb_lru_scan_depth = 4000
innodb_checksum_algorithm = crc32
innodb_lock_wait_timeout = 10
innodb_rollback_on_timeout = 1
innodb_print_all_deadlocks = 1
innodb_file_per_table = 1
innodb_online_alter_log_max_size = 4G
internal_tmp_disk_storage_engine = InnoDB
innodb_stats_on_metadata = 0
innodb_status_file = 1
innodb_status_output = 0
innodb_status_output_locks = 0
performance_schema = 1
performance_schema_instrument = '%=on'
innodb_monitor_enable="module_innodb"
innodb_monitor_enable="module_server"
innodb_monitor_enable="module_dml"
innodb_monitor_enable="module_ddl"
innodb_monitor_enable="module_trx"
innodb_monitor_enable="module_os"
innodb_monitor_enable="module_purge"
innodb_monitor_enable="module_log"
innodb_monitor_enable="module_lock"
innodb_monitor_enable="module_buffer"
innodb_monitor_enable="module_index"
innodb_monitor_enable="module_ibuf_system"
innodb_monitor_enable="module_buffer_page"
innodb_monitor_enable="module_index"
innodb_monitor_enable="module_adaptive_hash"

[mysqldump]
quick
max_allowed_packet = 32M

EOF

创建必要的数据目录并授权

[root@developerhonor ~]# mkdir -p /data/mysql/{mysqldata,slowlog,error,log}
[root@developerhonor ~]# chown mysql.mysql -R /data

初始化数据目录

[root@developerhonor build]# mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize
[root@developerhonor build]# du -sh /data/
5.1G    /data/

启动数据库

[root@developerhonor bin]# mysqld --daemonize 

使用密码登录数据库

[root@developerhonor 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.33-log

Copyright (c) 20002021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

更改 MySQL 初始化密码,否则无法使用数据库

mysql> alter user 'root'@'localhost' identified by 'redhat';
Query OK, 0 rows affected (0.00 sec)

显示数据库列表

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

退出数据库

mysql> exit
Bye

至此,MySQL 数据库源码编译安装完成,后面的功能大家一起来慢慢探索。


如果喜欢,点个赞吧 !


以上是关于MySQL 5.7.33 编译安装的主要内容,如果未能解决你的问题,请参考以下文章

linux centos7源码编译安装LNMP企业级架构

linux centos7源码编译安装LNMP企业级架构

mysql 5.7.33安装教程

centos7 安装mysql-community-5.7.33

ubuntu系统20.04 安装 mysql-5.7.33并实现自动化部署

ubuntu系统20.04 安装 mysql-5.7.33并实现自动化部署