CentOS6 二进制安装 && 源码编译安装 MySQL-5.7.34

centos6、7通用,mysql5.7通用

一、源码编译安装

1、下载安装包

mysqlhttps://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/ 国内各镜像源都可以
boosthttps://www.boost.org/users/download/ 注意从MySQL 5.7.5开始,Boost库是必需的,目前mysql5.7.34编译选项要求boost1.59以上版本
cmakehttps://cmake.org/download/ yum安装的cmake可能会报版本低不可用,建议安装高版本

[root@42545fda83bb]> ls /usr/local/src
mysql-5.7.34.tar.gz
boost_1_59_0.tar.gz
cmake-3.8.0-rc2.tar.gz

2、安装基本依赖包

[root@42545fda83bb]> yum install -y gcc gcc-c++ pcre pcre-devel ncurses-devel make perl autoconf automake zlib libxml libgcrypt libtool bison zlin-devel openssl-devel

3、解压包,创建目录,创建用户,目录授权,源码编译安装cmake

[root@42545fda83bb]> groupadd mysql && useradd -g mysql -s /sbin/nologin -M mysql
[root@42545fda83bb]> mkdir /data/mysql/{data,etc,log}
[root@42545fda83bb]> tar -zxvf cmake-3.8.0-rc2.tar.gz -C /data
[root@42545fda83bb]> tar -zxvf boost_1_59_0.tar.gz -C /data
[root@42545fda83bb]> tar -zxvf mysql-5.7.34.tar.gz 
[root@42545fda83bb]> cd /data/cmake-3.8.0-rc2
[root@42545fda83bb cmake-3.8.0-rc2]> ./bootstrap
[root@42545fda83bb cmake-3.8.0-rc2]> make && make install

5、编译安装mysql主步骤

源码编译mysql常用参数:
CMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql #
DEFAULT_CHARSET:指定服务器默认字符集,默认latin1 #
DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci #
ENABLED_LOCAL_INFILE:指定是否允许本地执行LOAD DATA INFILE,默认OFF #
WITH_COMMENT:指定编译备注信息 #
WITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM,MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。
WITHOUT_xxx_STORAGE_ENGINE:指定不编译的存储引擎 # SYSCONFDIR:初始化参数文件目录 # MYSQL_DATADIR:数据文件目录 # MYSQL_TCP_PORT:服务端口号,默认3306 # MYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock

[root@42545fda83bb]> cd /usr/local/src/mysql-5.7.34
/data/cmake-3.8.0-rc2/bin/cmake \
-DCMAKE_INSTALL_PREFIX=/data/mysql \
-DMYSQL_DATADIR=/data/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/data/boost_1_59_0

[root@42545fda83bb]> make -j 4 && make install
#目录授权
[root@42545fda83bb]> chown -R mysql:mysql /data/mysql


PS:出错后重新运行配置,需要删除CMakeCache.txt文件

make clean 
rm -f CMakeCache.txt 

mysql5.7.8的make编译, 如果是阿里云centos主机512M内存的, 会在make编译到45%时会报错, 这是内存不足所致。

c++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2

那么设置2G交换分区来用下 :

dd if=/dev/zero of=/swapfile bs=1k count=2048000 --获取要增加的2G的SWAP文件块
mkswap /swapfile     -- 创建SWAP文件
swapon /swapfile     -- 激活SWAP文件
swapon -s            -- 查看SWAP信息是否正确
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab     -- 添加到fstab文件中让系统引导时自动启动

注意, swapfile文件的路径在/var/下
编译完后, 如果不想要交换分区了, 可以删除:

swapoff /swapfile
rm -fr /swapfile


6、增加环境变量

[root@42545fda83bb]> vim /etc/profile
export LANG=Zh_CN.UTF-8
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/data/mysql/bin

[root@42545fda83bb]> source /etc/profile

7、初始化创建实例,注意保存末尾输出的12位随机密码,首次登录会用到

[root@42545fda83bb]> /data/mysql/bin/mysqld --initialize --user=mysql --explicit_defaults_for_timestamp=1 --basedir=/data/mysql --datadir=/data/mysql/data
2022-01-17T09:07:50.522488Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-01-17T09:07:50.552039Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-01-17T09:07:50.606344Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: f2437bba-7774-11ec-9bdc-0242ac11000f.
2022-01-17T09:07:50.606855Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-01-17T09:07:51.346539Z 0 [Warning] CA certificate ca.pem is self signed.
2022-01-17T09:07:51.375171Z 1 [Note] A temporary password is generated for root@localhost: E1hNNP<1tpZo

8、准备mysql配置文件

[root@42545fda83bb]> vim /data/mysql/etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
server_id=10
port = 3306
user = mysql
socket = /data/mysql/data/mysql.sock
basedir = /data/mysql
datadir = /data/mysql/data
pid-file = /data/mysql/data/mysql.pid
max_connections = 1000
max_connect_errors = 1000
table_open_cache = 1024
max_allowed_packet = 128M
open_files_limit = 65535

##log
log_error = /data/mysql/log/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/log/mysql-slow.log
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

9、创建日志文件(配置文件指定的话就要创建,启动不会自动创建,会报错,没指定的话不创建也可以),启动服务

[root@42545fda83bb mysql]> touch /data/mysql/log/mysql-error.log
[root@42545fda83bb mysql]> touch /data/mysql/log/mysql-slow.log
[root@42545fda83bb mysql]> chown -R mysql:mysql /data/mysql/

命令启动(不常用),用下面步骤服务的方式更方便
[root@42545fda83bb mysql]> /data/mysql/bin/mysqld_safe --defaults-file=/data/mysql/etc/my.cnf --user=mysql &
[1] 34345
[root@42545fda83bb mysql]> 2022-01-17T09:47:25.475018Z mysqld_safe Logging to '/data/mysql/log/mysql-error.log'.
2022-01-17T09:47:25.508501Z mysqld_safe Starting mysqld daemon with databases from /data/mysql/data

10、准备服务,增加执行权限

[root@42545fda83bb mysql]> cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@42545fda83bb mysql]> chmod 755 /etc/init.d/mysqld
启动服务
[root@42545fda83bb mysql]> service mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 

[root@42545fda83bb mysql]> ps -ef | grep mysql
root      33975      0  0 09:35 pts/1    00:00:00 /bin/sh /data/mysql/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid
mysql     34277  33975  0 09:35 pts/1    00:00:00 /data/mysql/bin/mysqld --basedir=/data/mysql --datadir=/data/mysql/data --plugin-dir=/data/mysql/lib/plugin --user=mysql --log-error=/data/mysql/log/mysql-error.log --open-files-limit=65535 --pid-file=/data/mysql/data/mysql.pid --socket=/data/mysql/data/mysql.sock --port=3306

[root@42545fda83bb mysql]> ss -lntp
State       Recv-Q Send-Q                                                              Local Address:Port                                                                Peer Address:Port 
LISTEN      0      128                                                                            :::3306                                                                          :::*    

11、测试登录,修改密码

[root@42545fda83bb mysql]> mysql -hlocalhost -uroot --socket=/data/mysql/data/mysql.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.34-log Source distribution

Copyright (c) 2000, 2021, 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> SHOW DATABASES;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

#需要修改初始密码
mysql> alter user 'root'@'localhost' identified by '123456';

#授权远程登录
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql> quit; 
mysql> exit;(与上等效, 都是退出mysql连接)




二、二进制安装mysql5.7
二进制安装相对比较简单方便
1、准备安装包,创建软链接

cd /usr/local/src
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
tar -zxvf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
ln -sv /usr/local/src/mysql-5.7.34-linux-glibc2.12-x86_64 /usr/local/mysql

2、安装依赖包

yum install -y gcc-c++ readline-devel zlib-devel bison cmake

3、创建用户、数据目录、授权

groupadd mysql  && useradd -g mysql -s /sbin/nologin -M mysql
mkdir -p /data/mysql/{data,log} 
touch /data/mysql/log/{mysql-error,mysql-slow}.log
chown -R mysql:mysql /data/mysql /usr/local/mysql

4、数据库初始化创建实例

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data   #注意保存末尾的随机密码
/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/data/mysql/data

5、准备配置文件、准备服务、启动服务

》》》》》》》》》》准备配置文件
mv /etc/my.cnf /etc/my.cnf.bak
vim /etc/my.cnf
[client]
port = 3306
socket = /data/mysql/mysql.sock

[mysqld]
server_id=10
port = 3306
user = mysql
socket = /data/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql/data
pid-file = /data/mysql/data/mysql.pid
max_connections = 1000
max_connect_errors = 1000
table_open_cache = 1024
max_allowed_packet = 128M
open_files_limit = 65535

# [innodb]    ##innodb的可以先不设置,不然启动会报错
innodb_buffer_pool_size = 1024M
innodb_file_per_table = 1
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_purge_threads = 2
innodb_flush_log_at_trx_commit = 1
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 16M
innodb_max_dirty_pages_pct = 80
innodb_lock_wait_timeout = 30
innodb_data_file_path=ibdata1:1024M:autoextend

##log
log_error = /data/mysql/log/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/log/mysql-slow.log
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

》》》》》》》》》》准备服务、启动服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile  && source /etc/profile
/etc/init.d/mysqld start
cat /data/mysql/log/mysql-error.log

6、修改密码,开启远程登录,刷新权限

mysql -uroot -p
********
[mysql] > set password=password('123123');
[mysql] > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
[mysql] > FLUSH PRIVILEGES;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值