编译安装MySQL

root
233
文章
0
评论
2020年2月26日18:56:16 评论 8144字阅读27分8秒

编译安装Mysql

mysql官网下载地址:https://dev.mysql.com/downloads/mysql/

mysql5.7boost库下载:https://sourceforge.net/projects/boost/files/boost/

boost1.59:https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

5.7以后的版本boost库必须装

5.6以前boost库都是自带的不用装

首先卸载系统自带boost,mysql(要是有mysql-libs这个包不用删除)

[root@apache-web mysql-5.7.29]# yum -y remove boost-*
[root@apache-web mysql-5.7.29]# yum -y remove mysql

 

在编译之前,也需要安装依赖包

5.5编译安装用的configure,5.5之后编译安装用的cmake

5.6之前cmake2.6就可以

5.7以后cmake不能低于2.8

配置mysql的yum网络源

从centos6开始,官方版本的yum源中用mariadb替换了mysql,那么安装mysql一般需要去官网下载rpm包或者源码包等方式。如果还想直接yum安装的话需要自己配置mysql的yum源。

官方yum源
https://dev.mysql.com/downloads/repo/yum/

下载对应版本mysql源到本地,如果系统是centos7,这里选择el7版本

安装yum源

[root@apache-web tools]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm 
warning: mysql80-community-release-el7-3.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql80-community-release-el7-3  ################################# [100%]

修改yum网络源的mysql安装版本,默认8.0

要修改默认安装版本的话,可以直接修改mysql的yum源文件,yum配置文件里从5.5版本到8.0都有,只不过默认只开启了mysql8.0。更改别的版本记得将mysql8.0的源 enable=0

vim /etc/yum.repos.d/mysql-community.repo

安装mysql的依赖包

yum -y install gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* make cmake

[root@apache-web tools]# yum -y install gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* make cmake

创建www虚拟用户

[root@apache-web tools]# groupadd www
[root@apache-web tools]# useradd -M -s /sbin/nologin -r -g www www
[root@apache-web tools]# id www
uid=991(www) gid=1019(www) groups=1019(www)

创建数据存储目录

[root@apache-web tools]# mkdir -p /server/mysql/data

进行编译安装mysql

[root@apache-web tools]# tar xf boost_1_59_0.tar.gz 
[root@apache-web tools]# ll
total 134948
drwx------  8  501 games      302 Aug 12  2015 boost_1_59_0
-rw-r--r--  1 root root  83709983 Feb 26 13:24 boost_1_59_0.tar.gz
drwxr-xr-x 36 7161 31415     4096 Feb 26 12:56 mysql-5.7.29
-rw-r--r--  1 root root  54438870 Feb 25 22:14 mysql-5.7.29.tar.gz
-rw-r--r--  1 root root     26024 Feb 26 11:58 mysql80-community-release-el7-3.noarch.rpm
[root@apache-web tools]# mv boost_1_59_0 boost
[root@apache-web tools]# cd mysql-5.7.29/
[root@apache-web mysql-5.7.29]# cmake -DCMAKE_INSTALL_PREFIX=/server/mysql -DMYSQL_DATADIR=/server/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/server/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/server/tools/boost
[root@apache-web tmp]# make -j 4

[root@apache-web tmp]# make install

 

-DCMAKE_INSTALL_PREFIX=/server/mysql

  • 指定MySQL程序的安装路径,默认/usr/local/mysql

-DMYSQL_DATADIR=/server/mysql/data

  • 指定数据文件

-DSYSCONFDIR=/etc

  • 指定初始化参数文件目录

-DWITH_MYISAM_STORAGE_ENGINE=1

  • 指定静态编译的mysql的存储引擎

-DWITH_INNOBASE_STORAGE_ENGINE=1

  • 指定静态编译的mysql的存储引擎

-DWITH_MEMORY_STORAGE_ENGINE=1

  • 指定静态编译的mysql的存储引擎

-DWITH_PARTITION_STORAGE_ENGINE=1

  • 指定静态编译的mysql的存储引擎

-DWITH_READLINE=1

  • 上下翻历史命令

-DMYSQL_UNIX_ADDR=/server/mysql/mysql.sock

  • socket文件路径,默认/tmp/msyql.sock

-DMYSQL_TCP_PORT=3306

  • 指定服务端口,默认3306

-DENABLED_LOCAL_INFILE=1

  • 指定是否容许本地执行LOAD DATA INFILE,默认off

-DEXTRA_CHARSETS=all

  • 扩展的字符集支持所有的

-DDEFAULT_CHARSET=utf8

  • 指定服务器默认字符集,默认latin1

-DDEFAULT_COLLATION=utf8_general_ci

  • 指定服务器默认的校队规则,默认latin1_general_ci

-DDOWNLOAD_BOOST=1

  • 指定开启boost库

-DWITH_BOOST=/server/tools/boost

  • 指定boost库文字hi

-----------------------------------------------------------------

进行编译,报错

[ 83%] Built target mysqlpump
make[1]: *** [libmysqld/CMakeFiles/sql_embedded.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2

原因内存不足,至少要6G

解决方法:

[root@apache-web mysql-5.7.29]# dd if=/dev/zero of=/tmp/2G_swap bs=200M count=10

[root@apache-web mysql-5.7.29]# mkswap /tmp/2G_swap 

[root@apache-web tmp]# swapon 2G_swap

[root@apache-web tmp]# chmod 600 2G_swap 

要是想永久挂载/etc/fstab

/tmp/2G_swap swap defaults 0 0

 


 

 

安装好以后,修改目录属主属组信息

[root@apache-web server]# chown -R www.www mysql/
[root@apache-web server]# ll
total 0
drwxr-xr-x  2 root root   6 Feb 26 14:06 boost
drwxr-xr-x 11 www  www  178 Feb 26 15:28 mysql
drwxr-xr-x  2 root root   6 Oct  9 18:18 scripts
drwxr-xr-x  4 root root 143 Feb 26 14:05 tools

生成配置文件

从5.7.18开始不在二进制包中提供my-default.cnf文件,在5.7.18版本中,使用tar.gz安装时,也就是压缩包解压出来安装这种,已经不再需要my.cnf文件也能正常运行

  • 5.7.18以前版本需要这样先把配置文件进行备份
[root@apache-web server]# mv /etc/my.cnf /etc/my.cnf.bak
[root@apache-web server]# cp -a /server/mysql/support-files/my-default.cnf /etc/my.cnf
  • 5.7.18以后的版本

创建logs,pids,tmp目录,用于存放日志文件,进程id文件。

[root@apache-web server]# mkdir -p mysql/{logs,pids,tmp}
[root@apache-web server]# chown -R www.www mysql/{logs,pids,tmp}
[root@apache-web server]# ll mysql/
total 296
drwxr-xr-x  2 www www   4096 Feb 26 15:28 bin
drwxr-xr-x  2 www www      6 Feb 26 12:32 data
drwxr-xr-x  2 www www     55 Feb 26 15:28 docs
drwxr-xr-x  3 www www   4096 Feb 26 15:28 include
drwxr-xr-x  4 www www    192 Feb 26 15:28 lib
-rw-r--r--  1 www www 276202 Dec 18 20:59 LICENSE
drwxr-xr-x  2 www www      6 Feb 26 16:39 logs
drwxr-xr-x  4 www www     30 Feb 26 15:28 man
drwxr-xr-x 10 www www   4096 Feb 26 15:28 mysql-test
drwxr-xr-x  2 www www      6 Feb 26 16:39 pids
-rw-r--r--  1 www www    587 Dec 18 20:59 README
-rw-r--r--  1 www www    587 Dec 18 20:59 README-test
drwxr-xr-x 28 www www   4096 Feb 26 15:28 share
drwxr-xr-x  2 www www     90 Feb 26 15:28 support-files
drwxr-xr-x  2 www www      6 Feb 26 16:39 tmp

创建配置文件my.cnf

用这个:

[client]
port = 3306
default-character-set=utf8
socket = /server/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /server/mysql/mysql.sock

[mysqld]
port = 3306
user = www
basedir = /server/mysql
datadir = /server/mysql/data
tmpdir = /server/mysql/tmp
pid-file = /server/mysql/pids/mysql.pid
log-error = /server/mysql/logs/error.log
expire_logs_days = 5
socket = /server/mysql/mysql.sock
skip_name_resolve = 1
transaction_isolation=READ-COMMITTED
character-set-server=utf8
collation-server=utf8_general_ci
init_connect='SET NAMES utf8'

 

解释:

[mysqld]
port=3306
user=www
#mysql安装根目录
basedir=/server/mysql

#mysql数据文件所在位置
datadir=/server/mysql/data

#临时目录 比如load data infile会用到
tmpdir=/server/mysql/tmp

#mysql进程ID目录
pid_file=/server/mysql/pids/mysql.pid

#mysql日志文件位置
log_error=/server/mysql/logs/error.log

#mysql binlog日志文件保存的过期时间,过期后自动删除
expire_logs_days=5

#设置socke文件所在目录
socket=/server/mysql/mysql.sock

#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve = 1

#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation=READ-COMMITTED

#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server=utf8

#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8_general_ci

#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8'

生成服务启动脚本

[root@apache-web server]# cp -a /server/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@apache-web server]# chmod +x /etc/init.d/mysqld 
[root@apache-web server]# chkconfig --add /etc/init.d/mysqld 
[root@apache-web server]# chkconfig mysqld on
[root@apache-web server]# chkconfig --list mysqld
Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on 6:off

数据库初始化(我这个没反应,但是成功了,我也不知道为什么)

[root@apache-web bin]# ./mysqld --initialize --user=www --basedir=/server/mysql --datadir=/server/mysql/data

 

启动mysqld

[root@apache-web /]# systemctl start mysqld
[root@apache-web /]# systemctl status mysqld.service 
● mysqld.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
   Active: active (running) since Wed 2020-02-26 17:43:09 CST; 1min 8s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 53458 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mysqld.service
           ├─53471 /bin/sh /server/mysql/bin/mysqld_safe --datadir=/server/mysql/data --pid-file=/server...
           └─53758 /server/mysql/bin/mysqld --basedir=/server/mysql --datadir=/server/mysql/data --plugi...

Feb 26 17:43:08 apache-web systemd[1]: Starting LSB: start and stop MySQL...
Feb 26 17:43:09 apache-web mysqld[53458]: Starting MySQL. SUCCESS!
Feb 26 17:43:09 apache-web systemd[1]: Started LSB: start and stop MySQL.

 

mysql命令添加环境变量

  • 方法一:/etc/profile
export PATH=/server/mysql/bin:$PATH
[root@apache-web /]# source /etc/profile
  • 方法二:ln -s /server/mysql/bin/*  /usr/bin/*

登陆数据库

查看数据库密码:cat /server/mysql/logs/error.log |grep password

修改数据库密码:

[root@apache-web /]# mysql -uroot -p7Et=coWF2o+Y
mysql> set password=password("123456");
Query OK, 0 rows affected, 1 warning (0.00 sec)

方法二:

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

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年2月26日18:56:16
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Kafka安装 软件管理

Kafka安装

Kafka安装 kafka定义: kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域 官网地址:http://kafka.apache.org/ 下载地址:http:/...
VSFTPd 软件管理

VSFTPd

VSFTPd vsFTPd的软件信息 服务端软件名:vsftpd 客户端软件名:ftp 服务名:vsftpd 端口号:20,21,地址范围内随机端口     vsFTP是linux...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: