• mysql编译安装教程


    本实验安装环境

    操作系统为centos7.9最小化安装

    关闭防火墙 内核

    1. [root@localhost ~]# systemctl stop firewalld
    2. [root@localhost ~]# systemctl disable firewalld
    3. Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
    4. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
    5. [root@localhost ~]# setenforce 0

    安装上传包

    [root@localhost ~]# yum -y install lrzsz

    备份原有repo文件,使用网易源

    1. [root@localhost ~]# mkdir -p /etc/yum.repos.d/bak
    2. [root@localhost ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
    3. [root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo --create-dirs http://mirrors.163.com/.help/CentOS7-Base-163.repo
    4. [root@localhost ~]# yum clean all
    5. [root@localhost ~]# yum makecache
    6. [root@localhost ~]# yum repolist

    卸载自带的mysql和mariadb相关的rpm包

    1. [root@localhost ~]# rpm -qa |grep mysql
    2. [root@localhost ~]# rpm -qa |grep mariadb
    3. mariadb-libs-5.5.68-1.el7.x86_64
    4. [root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64


    安装依赖

    [root@localhost ~]# yum install -y cmake make gcc gcc-c++ openssl openssl-devel ncurses ncurses-devel bison bison-devel


    下载安装包 mysql-MySQL-5.7安装包下载_开源镜像站-阿里云 (aliyun.com) 

    安装包拖入系统

    1. [root@localhost ~]# ls
    2. anaconda-ks.cfg  mysql-boost-5.7.37.tar.gz

    解压

    1. [root@localhost ~]# tar -zxvf mysql-boost-5.7.37.tar.gz -C /usr/src
    2. [root@localhost ~]# cd /usr/src/mysql-5.7.37/

    编译安装

    编译参数

    1. [root@localhost mysql-5.7.37]# cmake \
    2. > -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    3. > -DMYSQL_DATADIR=/usr/local/mysql/data \
    4. > -DSYSCONFDIR=/usr/local/mysql/etc \
    5. > -DWITH_INNOBASE_STORAGE_ENGINE=ON \
    6. > -DWITH_MYISAM_STORAGE_ENGINE=ON \
    7. > -DDEFAULT_CHARSET=utf8 \
    8. > -DDEFAULT_COLLATION=utf8_general_ci \
    9. > -DENABLED_LOCAL_INFILE=ON \
    10. > -DMYSQL_TCP_PORT=3306 \
    11. > -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
    12. > -DWITH_INNODB_MEMCACHED=ON \
    13. > -DWITH_BOOST=boost/boost_1_59_0


    相关编译参数解释,更多解释:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

    1. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \    #指定MySQL安装目录
    2. -DMYSQL_DATADIR=/usr/local/mysql/data \       #指定MySQL数据目录
    3. -DSYSCONFDIR=/usr/local/mysql/etc \                #指定my.cnf选项文件目录
    4. -DWITH_INNOBASE_STORAGE_ENGINE=ON\    #Innodb引擎
    5. -DWITH_MYISAM_STORAGE_ENGINE=ON \    #MyISAM引擎
    6. -DDEFAULT_CHARSET=utf8 \            #服务器字符集,默认latin1
    7. -DDEFAULT_COLLATION=utf8_general_ci \    #服务器排序规则,默认latin1_swedish_ci
    8. -DENABLED_LOCAL_INFILE=ON \        #是否为加载数据启用本地,默认为OFF
    9. -DMYSQL_TCP_PORT=3306 \                                   #服务器监听端口,默认为3306
    10. -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \    #Unix套接字文件路径,默认/tmp/mysql.sock
    11. -DWITH_INNODB_MEMCACHED=ON \    #是否生成memcached共享库,默认OFF
    12. -DWITH_BOOST=boost/boost_1_59_0    #Boost库源代码的位置,指向下载的源码包里,相对/绝对路径皆可

    编译安装    使用4个核心编译

    [root@localhost mysql-5.7.37]# make && make install   或   make -j4 && make install 


    创建用户,目录,授权

    1. [root@localhost mysql-5.7.37]# groupadd mysql
    2. [root@localhost mysql-5.7.37]# useradd -r -g mysql -s /bin/false mysql
    3. [root@localhost mysql-5.7.37]# cd /usr/local/mysql
    4. [root@localhost mysql]# mkdir -p /usr/local/mysql/data
    5. [root@localhost mysql]# mkdir -p /usr/local/mysql/etc
    6. [root@localhost mysql]# mkdir -p /usr/local/mysql/tmp
    7. [root@localhost mysql]# mkdir -p /usr/local/mysql/logs
    8. [root@localhost mysql]# chown -R mysql:mysql /usr/local/mysql

    编辑配置文件
    [root@localhost mysql]# vim /usr/local/mysql/etc/my.cnf

    1. [client]                                                #客户端设置
    2. port=3306                                               #服务器监听端口,默认为3306
    3. socket=/usr/local/mysql/tmp/mysql.sock                  #Unix套接字文件路径,默认/tmp/mysql.sock
    4.  
    5. [mysqld]                                                #服务端设置
    6. ## 一般配置选项
    7. port=3306                                               #服务器监听端口,默认为3306
    8. basedir=/usr/local/mysql                                #MySQL安装根目录
    9. datadir=/usr/local/mysql/data                           #MySQL数据文件目录
    10. socket=/usr/local/mysql/tmp/mysql.sock                  #Unix套接字文件路径,默认/tmp/mysql.sock
    11. pid-file=/usr/local/mysql/tmp/mysql.pid                 #服务进程pid文件路径
    12. character_set_server=utf8                               #默认字符集
    13. default_storage_engine=InnoDB                           #默认InnoDB存储引擎
    14. user=mysql
    15.  
    16. ## 连接配置选项
    17. max_connections=200                                     #最大并发连接数
    18. table_open_cache=400                                    #表打开缓存大小,默认2000
    19. open_files_limit=1000                                   #打开文件数限制,默认5000
    20. max_connect_errors=200                                  #最大连接失败数,默认100
    21. back_log=100                                            #请求连接队列数
    22. connect_timeout=20                                      #连接超时时间,默认10秒
    23. interactive_timeout=1200                                #交互式超时时间,默认28800秒
    24. wait_timeout=600                                        #非交互超时时间,默认28800秒
    25. net_read_timeout=30                                     #读取超时时间,默认30秒
    26. net_write_timeout=60                                    #写入超时时间,默认60秒
    27. max_allowed_packet=8M                                   #最大传输数据字节,默认4M
    28. thread_cache_size=10                                    #线程缓冲区(池)大小
    29. thread_stack=256K                                       #线程栈大小,32位平台196608、64位平台262144
    30.  
    31. ## 临时内存配置选项
    32. tmpdir=/tmp                                             #临时目录路径
    33. tmp_table_size=64M                                      #临时表大小,默认16M
    34. max_heap_table_size=64M                                 #最大内存表大小,默认16M
    35. sort_buffer_size=1M                                     #排序缓冲区大小,默认256K
    36. join_buffer_size=1M                                     #join缓冲区大小,默认256K
    37.  
    38. ## Innodb配置选项
    39. #innodb_thread_concurrency=0                            #InnoDB线程并发数
    40. innodb_io_capacity=200                                  #IO容量,可用于InnoDB后台任务的每秒I/O操作数(IOPS),
    41. innodb_io_capacity_max=400                              #IO最大容量,InnoDB在这种情况下由后台任务执行的最大IOPS数
    42. innodb_lock_wait_timeout=50                             #InnoDB引擎锁等待超时时间,默认50(单位:秒)
    43.  
    44. innodb_buffer_pool_size=512M                            #InnoDB缓冲池大小,默认128M
    45. innodb_buffer_pool_instances=4                          #InnoDB缓冲池划分区域数
    46. innodb_max_dirty_pages_pct=75                            #缓冲池最大允许脏页比例,默认为75
    47. innodb_flush_method=O_DIRECT                            #日志刷新方法,默认为fdatasync
    48. innodb_flush_log_at_trx_commit=2                        #事务日志刷新方式,默认为0
    49. transaction_isolation=REPEATABLE-READ                   #事务隔离级别,默认REPEATABLE-READ
    50.  
    51. innodb_data_home_dir=/usr/local/mysql/data              #表空间文件路径,默认保存在MySQL的datadir中
    52. innodb_data_file_path=ibdata1:128M:autoextend           #表空间文件大小
    53. innodb_file_per_table=ON                                #每表独立表空间
    54.  
    55. innodb_log_group_home_dir=/usr/local/mysql/data         #redoLog文件目录,默认保存在MySQL的datadir中
    56. innodb_log_files_in_group=2                             #日志组中的日志文件数,默认为2
    57. innodb_log_file_size=128M                               #日志文件大小,默认为48MB
    58. innodb_log_buffer_size=32M                              #日志缓冲区大小,默认为16MB
    59.  
    60. ## MyISAM配置选项
    61. key_buffer_size=32M                                     #索引缓冲区大小,默认8M
    62. read_buffer_size=4M                                   #顺序读缓区冲大小,默认128K
    63. read_rnd_buffer_size=4M                                   #随机读缓冲区大小,默认256K
    64. bulk_insert_buffer_size=8M                              #块插入缓冲区大小,默认8M
    65. myisam_sort_buffer_size=8M                               #MyISAM排序缓冲大小,默认8M
    66. #myisam_max_sort_file_size=1G                           #MyISAM排序最大临时大小
    67. myisam_repair_threads=1                                 #MyISAM修复线程
    68. skip-external-locking                                   #跳过外部锁定,启用文件锁会影响性能
    69.  
    70. ## 日志配置选项
    71. log_output=FILE                                     #日志输出目标,TABLE(输出到表)、FILE(输出到文件)、NONE(不输出),可选择一个或多个以逗>号分隔
    72. log_error=/usr/local/mysql/logs/error.log               #错误日志存放路径
    73. log_error_verbosity=1                                   #错误日志过滤,允许的值为1(仅错误),2(错误和警告),3(错误、警告和注释),默认值为3。
    74. log_timestamps=SYSTEM                                   #错误日志消息格式,日志中显示时间戳的时区,UTC(默认值)和 SYSTEM(本地系统时区)
    75. general_log=ON                                          #开启查询日志,一般选择不开启,因为查询日志记录很详细,会增大磁盘IO开销,影响性能
    76. general_log_file=/usr/local/mysql/logs/general.log      #通用查询日志存放路径
    77.  
    78. ## 慢查询日志配置选项
    79. slow_query_log=ON                                       #开启慢查询日志
    80. slow_query_log_file=/usr/local/mysql/logs/slowq.log        #慢查询日志存放路径
    81. long_query_time=2                                       #慢查询时间,默认10(单位:秒)
    82. min_examined_row_limit=100                              #最小检查行限制,检索的行数必须达到此值才可被记为慢查询
    83. log_slow_admin_statements=ON                            #记录慢查询管理语句
    84. log_queries_not_using_indexes=ON                        #记录查询未使用索引语句
    85. log_throttle_queries_not_using_indexes=5                #记录未使用索引速率限制,默认为0不限制
    86. log_slow_slave_statements=ON                            #记录从库复制的慢查询,作为从库时生效,从库复制中如果有慢查询也将被记录
    87.  
    88. ## 复制配置选项
    89. server-id=1                                             #MySQL服务唯一标识
    90. log-bin=mysql-bin                                       #开启二进制日志,默认位置是datadir数据目录
    91. log-bin-index=mysql-bin.index                           #binlog索引文件
    92. binlog_format=MIXED                                     #binlog日志格式,分三种:STATEMENT、ROW或MIXED,MySQL 5.7.7之前默认为STATEMENT,之后默认为ROW
    93. binlog_cache_size=1M                                    #binlog缓存大小,默认32KB
    94. max_binlog_cache_size=1G                                #binlog最大缓存大小,推荐最大值为4GB
    95. max_binlog_size=256M                                    #binlog最大文件大小,最小值为4096字节,最大值和默认值为1GB
    96. expire_logs_days=7                                      #binlog过期天数,默认为0不自动删除
    97. log_slave_updates=ON                                    #binlog级联复制
    98. sync_binlog=1                                           #binlog同步频率,0为禁用同步(最佳性能,但可能丢失事务),为1开启同步(影响性能,但最安全不会丢失任何事务),为N操作N次事务后同步1次
    99.  
    100. relay_log=relay-bin                                     #relaylog文件路径,默认位置是datadir数据目录
    101. relay_log_index=relay-log.index                         #relaylog索引文件
    102. max_relay_log_size=256M                                 #relaylog最大文件大小
    103. relay_log_purge=ON                                      #中继日志自动清除,默认值为1(ON)
    104. relay_log_recovery=ON                                   #中继日志自动恢复
    105.  
    106. auto_increment_offset=1                                 #自增值偏移量
    107. auto_increment_increment=1                              #自增值自增量
    108. slave_net_timeout=60                                    #从机连接超时时间
    109. replicate-wild-ignore-table=mysql.%                     #复制时忽略的数据库表,告诉从线程不要复制到与给定通配符模式匹配的表
    110. skip-slave-start                                        #跳过Slave启动,Slave复制进程不随MySQL启动而启动
    111.  
    112. ## 其他配置选项
    113. #memlock=ON                                             #开启内存锁,此选项生效需系统支持mlockall()调用,将mysqld进程锁定在内存中,防止遇到操作系统导致mysqld交换到磁盘的问题
    114.  
    115. [mysqldump]                                             #mysqldump数据库备份工具
    116. quick                                                   #强制mysqldump从服务器查询取得记录直接输出,而不是取得所有记录后将它们缓存到内存中
    117. max_allowed_packet=16M                                  #最大传输数据字节,使用mysqldump工具备份数据库时,某表过大会导致备份失败,需要增大该值(大>于表大小即可)
    118.  
    119. [myisamchk]                                             #使用myisamchk实用程序可以用来获得有关你的数据库表的统计信息或检查、修复、优化他们
    120. key_buffer_size=32M                                     #索引缓冲区大小
    121. myisam_sort_buffer_size=8M                              #排序缓冲区大小
    122. read_buffer_size=4M                                     #读取缓区冲大小
    123. write_buffer_size=4M                                    #写入缓冲区大小


    初始化数据库

    [root@localhost mysql]# /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --initialize --user=mysql

    配置环境变量   在最后添加以下两行

    1. [root@localhost mysql]# vi /etc/profile
    2. export MYSQL_HOME=/usr/local/mysql
    3. export PATH=$MYSQL_HOME/bin:$PATH

    使环境变量即时生效

    [root@localhost mysql]# source /etc/profile

    配置系统服务

    [root@localhost mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

    重新加载系统服务配置

    [root@localhost mysql]# systemctl daemon-reload

    启动mysql服务,添加开机启动项并配置开机启动

    1. [root@localhost mysql]# systemctl restart mysql
    2. [root@localhost mysql]# /sbin/chkconfig mysql on
    3. [root@localhost mysql]# chkconfig -add mysql   此问题未知 不影响使用
    4. -add: 未知的选项

    查看开机密码root@localhost:后为密码

    1. [root@localhost mysql]# cat /usr/local/mysql/logs/error.log  |grep password
    2. 2022-09-17T23:02:49.845380+08:00 1 [Note] A temporary password is generated for root@localhost: fJf9MJqs)WZt


    进入数据库

    1. [root@localhost mysql]# mysql -uroot -p
    2. Enter password:  密码

    修改开机密码

    1. mysql> set password="1";
    2. Query OK, 0 rows affected (0.00 sec)

    数据库基本操作

    查看数据库

    1. mysql> show databases;
    2. +--------------------+
    3. | Database           |
    4. +--------------------+
    5. | information_schema |
    6. | mysql              |
    7. | performance_schema |
    8. | sys                |
    9. +--------------------+
    10. 4 rows in set (0.00 sec)

    创建数据库,数据库名称为NBclass,字符集为utf8
     

    1. mysql> create database NBclass character set utf8;
    2. Query OK, 1 row affected (0.00 sec)

    切换到NBclass数据库,创建表,表名称为NBtables,表中包含3列,分别是pid列,name列和tel列,这三列可填充的数据类型为INT型----整数型,CHAR(20)----固定长度为20的字符串和INT型----整数型
     

    1. mysql> use NBclass;
    2. Database changed
    3. mysql> create table NBtables(pid INT,name CHAR(20),tel INT);
    4. Query OK, 0 rows affected (0.01 sec)

    查看表名称,查看表详细信息,不包含表中数据,NBtables为刚才创建的表名称

    1. mysql> show tables;
    2. +-------------------+
    3. | Tables_in_NBclass |
    4. +-------------------+
    5. | NBtables          |
    6. +-------------------+
    7. 1 row in set (0.00 sec)
    8. mysql> show create table NBtables;
    9. +----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
    10. | Table    | Create Table                                                                                                                                              |
    11. +----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
    12. | NBtables | CREATE TABLE `NBtables` (
    13.   `pid` int(11) DEFAULT NULL,
    14.   `name` char(20) DEFAULT NULL,
    15.   `tel` int(11) DEFAULT NULL
    16. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    17. +----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+
    18. 1 row in set (0.01 sec)


    在表中插入数据,pid列插入数据"1",name列插入数据"王大锤",tel列插入数据“66668888”

    1. mysql> insert into NBtables values("1","王大锤","66668888");
    2. Query OK, 1 row affected (0.01 sec)

    再次插入数据2,小李飞刀,99999999

    1. mysql> insert into NBtables values("2","小李飞刀","999988888");
    2. Query OK, 1 row affected (0.00 sec)

    查看NBtables表的所有数据

    1. mysql> select * from NBtables;
    2. +------+--------------+-----------+
    3. | pid | name | tel |
    4. +------+--------------+-----------+
    5. | 1 | 王大锤 | 66668888 |
    6. | 2 | 小李飞刀 | 999988888 |
    7. +------+--------------+-----------+
    8. 2 rows in set (0.00 sec)

    完成
     

  • 相关阅读:
    51单片机DS1302时钟
    NSSCTF第8页(2)
    Cannot deserialize value of type `java.util.Date` from String
    Jmeter压测实战:Jmeter二次开发之自定义函数
    头歌实践平台-数据结构-二叉树及其应用
    Autosar诊断实战系列21-UDS连续帧(CF)数据接收代码级分析
    zbxtable
    直流有刷电机驱动基于STM32F302R8+X-NUCLEO-IHM07M1(三)
    Flutter NestedScrollView 、SliverAppBar全解析,悬浮菜单的应用
    Redisson 限流器源码分析
  • 原文地址:https://blog.csdn.net/weixin_45861372/article/details/126912691