centos7 源码包安装mysql5.7

源码包安装mysql5.7

一、centos7 中需要先卸载 mariadb-libs 软件包

    rpm -e --nodeps mariadb-libs

二、 安装依赖包

    yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel

相关依赖包的作用:

cmake:
由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。

Boost:
从 MySQL 5.7.5 开始 Boost 库是必需的,mysql 源码中用到了 C++的 Boost 库,要求必须安装 boost1.59.0 或以上版本, 这个选择源码安装

GCC:
是 Linux 下的 C 语言编译工具,mysql 源码编译完全由 C 和 C++编写,要求必须安装GCC

bison:
Linux 下 C/C++语法分析器

ncurses:
字符终端处理库

三、下载安装包

       wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz

同时你还应该下载

        wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

四、 添加启动 MySQL 服务的用户

        useradd -M -s /sbin/nologin mysql
        // -M  不创建用户的家目录
       // -s  指定一个不能登录的 shell

五、对安装目录进行授权

 shell> mkdir -p /mysql/data
 shell> chown -R   mysql:mysql   /usr/local/mysql
 shell> chown -R   mysql.mysql   /mysql/data
 shell> chmod 750  /mysql/data

六、解压和预编译

  tar xzf boost_1_59_0.tar.gz
  tar xzf mysql-5.7.25.tar.gz
  cp boost_1_59_0  mysql-5.7.25
  cd mysql-5.7.25
  cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_DATADIR=/mysql/data \
  -DWITH_BOOST=../boost_1_59_0 \
  -DSYSCONFDIR=/etc \
  -DENABLED_LOCAL_INFILE=1 \
  -DENABLE_DTRACE=0 \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_general_ci \
  -DWITH_EMBEDDED_SERVER=1

由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。

解释一下上面编译中用到的参数含义

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ # 指定安装目录
-DMYSQL_DATADIR=/mysql/data \ # 指定数据存放目录
-DWITH_BOOST=…/boost_1_59_0
-DSYSCONFDIR=/etc \ # 指定配置文件目录
-DENABLED_LOCAL_INFILE=1 \ # 指定允许使用load data infile功能,就是加载本地文件
-DENABLE_DTRACE=0
-DDEFAULT_CHARSET=utf8mb4 \ # 指定默认的字符编码
-DDEFAULT_COLLATION=utf8mb4_general_ci \ # 指定默认排序规则
-DWITH_EMBEDDED_SERVER=1 # 编译使用 libmysqld 嵌入式库

更多参数: https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#option_cmake_enabled_local_infile

当你看到如下类似信息,表示成功
在这里插入图片描述

七、编译安装
编译很消耗系统资源,小内存可能编译通不过,最少 2 G 以上的内存。

      make -j  $(grep processor /proc/cpuinfo | wc -l)
      make install

八、 添加环境变量

      echo -e '\n\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile && source /etc/profile

九、 添加 MySQL 服务到 systemd

拷贝可执行文件到指定的目录下,并修改名字为mysqld

   cp /usr/local/mysql/support-files/mysql.server   /etc/init.d/mysqld

授予可执行的权限

   chmod +x /etc/init.d/mysqld

设置为开机启动

   systemctl enable mysqld

十、设置配置文件
示例配置文件
[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
################ basic settings ################
bind-address = 0.0.0.0
pid-file = /var/run/mysql.pid
此处的pid参数为pid文件的绝对路径,存放在mysql的存放数据的文件夹下
user = mysql

character_set_server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip_name_resolve = 1
max_allowed_packet = 16777216
max_connections = 2000
max_connect_errors = 1000
explicit_defaults_for_timestamp = 1
join_buffer_size = 134217728
interactive_timeout = 1800
wait_timeout = 1800
read_buffer_size = 16777216
read_rnd_buffer_size = 33554432
sort_buffer_size = 33554432
key_buffer_size = 256M
transaction_isolation = READ-COMMITTED

############ log settings ############
log_error=/tmp/mysqld.log
expire_logs_days = 30
slow_query_log = 1
long_query_time = 2
log_slow_admin_statements = 1
min_examined_row_limit = 100
########### innodb settings ##########
innodb_buffer_pool_size = 1G
innodb_sort_buffer_size = 27108864
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_lock_wait_timeout = 5
innodb_flush_method = O_DIRECT
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_thread_concurrency = 8
innodb_flush_neighbors = 1
innodb_purge_threads = 4
innodb_large_prefix = 1
innodb_print_all_deadlocks = 1
innodb_strict_mode = 1
innodb_file_per_table = ON
innodb_log_file_size = 500M
innodb_log_buffer_size = 20M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit=2

各个配置项的意义详见官网
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
注意选择对象的版本

十 一、初始化数据库

    mysqld   --initialize   --user=mysql

–initialize-insecure 使用空密码。你应该在生产中及时修改密码。
或者使用 --initialize 这样的话,会为 root 用户生成一个随机的密码。
这个随机密码可能会被输出到初始化过程中,也有可能输出到错误日志中。

十 二、 启动服务

    systemctl  start  mysql

若启动失败,请remove mariadb* 之后 把 /mysql/data下的文件清空,重新初始化mysql,重新启动,或者使用绝对路径启动

十 三、忘记密码

      systemctl stop mysqld
      vi /etc/my.cnf 
      将设置为skip-grant-tables=1保存退出
      systemctl restart mysqld

登陆数据库

       mysql

修改用户名密码

      update mysql.user set authentication_string=PASSWORD('123') where user='root' and host='localhost';
      exit
      vi /etc/my.cnf 
  #号注释掉skip-grant-tables=1
  保存退出
  systemctl restart mysqld

十 四、查看目前 mysql 所支持的所有的字符集

  mysql> SHOW CHARACTER SET;
  mysql> SHOW CHARACTER SET LIKE 'latin%';

查看默认字符集

 mysql> show variables like 'collation_%';

 mysql> show variables like 'character_set_%';

/查看具体某个数据库的字符集/

 use db_name
 SELECT @@character_set_database, @@collation_database;
 或者
 use db_name
 status

完结

作者:alvenhhh
来源:csdn
文章著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linux狂热粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值