mysql安装

5.6.3.2源码包安装(安装mysql-boost-5.7.44.tar.gz版本,52MB)

wget -O  /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo

rpm -qa | grep mysql

rpm -qa | grep mariadb

rpm  -e  --nodeps  mariadb-libs  #使用yum删除会将mariadb的依赖关系一并删除的,这个要注意;--nodeps表示忽略依赖关系,即只卸载mariadb-libs,而不卸载它的依赖包。

rpm -qa | grep mariadb

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

#使用my.cnf配置文件和mysql用户初始化数据目录

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

#使用mysql的初始化安装

[root@localhost ~]#  bin/mysqld  --initialize  --user=mysql  --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data

注意:这是一整条命令

cmake  -DCMAKE_inSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/usr/local/mysql/data  -DSYSCONFDIR=/usr/local/mysql/etc  -DWITH_INNOBASE_STORAGE_ENGINE=ON   -DWITH_MYISAM_STORAGE_ENGINE=ON  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DENABLED_LOCAL_INFILE=ON  -DMYSQL_TCP_PORT=3306  -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock  -DWITH_INNODB_MEMCACHED=ON -DWITH_BOOST=boost/boost_1_59_0

解释:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql   #指定MySQL安装目录

-DMYSQL_DATADIR=/usr/local/mysql/data     #指定MySQL数据目录

-DSYSCONFDIR=/usr/local/mysql/etc          #指定my.cnf选项文件目录

-DWITH_INNOBASE_STORAGE_ENGINE=ON    #开启存储引擎ON,安装InnoDB引擎

-DWITH_MYISAM_STORAGE_ENGINE=ON      #开启存储引擎ON,安装MyISAM引擎

-DDEFAULT_CHARSET=utf8  #指定字符集,即语言

-DDEFAULT_COLLATION=utf8_general_ci   #指定字符集

-DENABLED_LOCAL_INFILE=ON  #

-DMYSQL_TCP_PORT=3306  #端口号

-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock  #

-DWITH_INNODB_MEMCACHED=ON  #

DDOWNLOAD_BOOST=1  #允许在线更新boost库

-DWITH_BOOST=boost/boost_1_59_0  #指定boost

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

参考其他解释:

具体参考官方文档:
MySQL :: MySQL 8.0 Reference Manual :: 2.8.7 MySQL Source-Configuration Options

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql   #:MySQL安装的根目录

-DMYSQL_DATADIR=/data/mysql  #:数据文件所存放的目录

-DSYSCONFDIR=/etc   #:MySQL配置文件所在目录

-DMYSQL_USER=mysql   #:MySQL服务的用户名

-DWITH_MYISAM_STORAGE_ENGINE=1  #:安装MyISAM引擎

-DWITH_INNOBASE_STORAGE_ENGINE=1  #:安装InnoDB引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1  #:安装Archive引擎

-DWITH_MEMORY_STORAGE_ENGINE=1   #:安装Memory引擎

-DWITH_FEDERATED_STORAGE_ENGINE=1  #:安装Federated引擎

-DWITH_PARTITION_STORAGE_ENGINE=1  #:安装Partition引擎

-DWITH_READLINE=1   #:MySQL的readline library

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock   #:sock文件的路径

-DMYSQL_TCP_PORT=3306   #:MySQL的监听端口

-DENABLED_LOCAL_INFILE=1   #:启用加载本地数据

-DENABLE_DOWNLOADS=1   #:编译时允许自主下载相关文件

-DEXTRA_CHARSETS=all   #:使MySQL支持所有的扩展字符

-DDEFAULT_CHARSET=utf8mb4    #:设置默认字符集为utf8mb4

-DDEFAULT_COLLATION=utf8mb4_general_ci   #:设置默认字符校对

-DWITH_DEBUG=0    #:禁用调试模式

-DMYSQL_MAINTAINER_MODE=0    #:是否启用mysql维护器特定的开发环境

-DDOWNLOAD_BOOST=1     #:允许在线更新boost库

-DWITH_BOOST=…/boost     #:指定boost安装路径

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

tar  -zxf  mysql-boost-5.7.37.tar.gz   -C  /usr/src

cd  /usr/src/mysql-5.7.37/   

make  && make install  如果虚拟机cpu在一个以上可以用make -j ,多线程同时编译会加快速度。如[root@localhost ~]# make  -j2  ,(这里不要超过cpu的逻辑处理器个数,这里设为2)

安装步骤(以安装mysql-boost-5.7.44.tar为例)

#如果我们上面使用yum方法安装过mysql-community-server,先要卸载。因为等一下我们要使用源码来安装。

[root@localhost ~]# rpm  -qa | grep  mysql-community-server

[root@localhost ~]# rpm  -e  --nodeps  mysql-community-server

#查询是否安装了mariada-libs(如果安装过数据库mariadb-libs,这里也要卸载,因为会冲突。)

[root@localhost  ~]# rpm  -qa  |  grep  mariada-libs

#卸载mariada-libs

[root@localhost ~]#rpm  -e  --nodeps  mariadb-libs     #--nodeps 表示不卸载依赖关系

5.6.3.2.1下载源码包

下载源码包下载带boost的包mysql-boost-5.7.44.tar.gz

版本5.7.44,到这个网站去下载:MySQL :: Download MySQL Community Server (Archived Versions)

把源码包导入linux系统/root目录下

[root@localhost ~]# rz  -E   #把源码包往xshell中一拖即可复制。

5.6.3.2.2安装mysql的依赖包

搭建网络yum源,因为要使用yum安装msql的依赖包

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

5.6.3.2.3把源码包解压到/usr/src/下,并进入安装目录

[root@localhost ~]# tar  -vxf  /root/mysql-5.7.44.tar.gz  -C  /usr/src/

[root@localhost ~]# cd  /usr/src/mysql-5.7.44/

[root@localhost mysql-5.7.44]# ls

BUILD            dbug                 libbinlogevents      man         rapid             sql-common     VERSION

client           Docs                 libbinlogstandalone  mysql-test  README            storage        vio

cmake            Doxyfile-perfschema  libmysql             mysys       regex             strings        win

CMakeLists.txt   extra                libmysqld            mysys_ssl   scripts           support-files

config.h.cmake   include              libservices          packaging   source_downloads  testclients

configure.cmake  INSTALL              LICENSE              plugin      sql               unittest

5.6.3.2.4指定安装参数(预编译)

#执行cmake命令

[root@localhost mysql-5.7.44]# cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/usr/local/mysql/data  -DSYSCONFDIR=/usr/local/mysql/etc  -DWITH_INNOBASE_STORAGE_ENGINE=ON   -DWITH_MYISAM_STORAGE_ENGINE=ON  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DENABLED_LOCAL_INFILE=ON  -DMYSQL_TCP_PORT=3306  -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock  -DWITH_INNODB_MEMCACHED=ON -DDOWNLOAD_BOOST=off  -DWITH_BOOST=boost/boost_1_59_0

返回结果如下:

……

-- Configuring done

-- Generating done

-- Build files have been written to: /usr/src/mysql-5.7.44  #生成的文件为Makefile,路径是/usr/src/mysql-5.7.44/Makefile

5.6.3.2.5编译和安装mysql

[root@localhost  mysql-5.7.44]# make  &&  make install

5.6.3.2.6初始化数据库

groupadd  mysql

useradd  -r  -g  mysql  -s  /bin/false  mysql

cd /usr/local/mysql  #切换目录

mkdir -p  /usr/local/mysql/data

mkdir -p  /usr/local/mysql/etc

mkdir -p  /usr/local/mysql/tmp

mkdir -p  /usr/local/mysql/logs

chown  -R  mysql:mysql  /usr/local/mysql

chmod  u+wrx  -R  /usr/local/mysql

vim  /usr/local/mysql/etc/my.cnf

示例:

1.创建组和用户

[root@localhost ~]# groupadd  mysql

[root@localhost ~]# useradd -r  -g  mysql  -s  /bin/false  mysql

2.切换目录

[root@localhost ~]# cd  /usr/local/mysql

[root@localhost mysql]# pwd

/usr/local/mysql

3.在目录/usr/local/mysql下创建目录

[root@localhost mysql]# mkdir -p /usr/local/mysql/data

[root@localhost mysql]# mkdir -p /usr/local/mysql/etc

[root@localhost mysql]# mkdir -p /usr/local/mysql/tmp

[root@localhost mysql]# mkdir -p /usr/local/mysql/logs

4.修改目录的归属关系

[root@localhost mysql]# chown -R  mysql:mysql  /usr/local/mysql

5.创建并编辑文件

[root@localhost mysql]# vim  /usr/local/mysql/etc/my.cnf

[client]    #客户端设置

port=3306  #服务器监听端口,默认为3306

socket=/usr/local/mysql/tmp/mysql.sock   #Unix套接字文件路径,默认是/tmp/mysql.sock

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

[mysqld]  #服务端设置

##一般配置选项

port=3306  #服务器监听端口,默认为3306

basedir=/usr/local/mysql  #MySQL安装目录

datadir=/usr/local/mysql/data  #MySQL数据文件目录

socket=/usr/local/mysql/tmp/mysql.sock  #Unix套接字文件路径,默认是/tmp/mysql.sock

pid-file=/usr/local/mysql/tmp/mysql.pid   #服务进程pid文件路径

character_set_server=utf8    #默认字符集

default_storage_engine=InnoDB  #默认InnoDB存储引擎

user=mysql

##连接配置选项

max_connections=200     #最大并发连接数

table_open_cache=400    #表打开缓存大小,默认是2000

open_files_limit=1000     #打开文件数限制,默认5000

max_connect_errors=200   #最大连接失败数,默认100

back_log=100            #请求连接队列数

connect_timeout=20      #连接超时时间,默认10秒

interactive_timeout=1200  #交互式超时时间,默认28800秒

wait_timeout=600        #非交互式超时时间,默认28800秒

net_read_timeout=30     #读取超时时间,默认30秒

net_write_timeout=60    #写入超时时间,默认60秒

max_allowed_packet=8M  #最大传输数据字节,默认4M

thread_cache_size=10     #线程缓冲区(池)大小

thread_stack=256K       #线程栈大小,32位平台196608、64位平台262144

##临时内存配置选项

tmpdir=/tmp   #临时目录路径

tmp_table_size=64M  #临时表大小,默认16M

max_heap_table_size=64M  #最大内存表大小,默认16M

sort_buffer_size=1M     #排序缓冲区大小,默认256K

join_buffer_size=1M   #join缓冲区大小,默认256K

##Innodb配置选项(引擎配置)

#innodb_thread_concurrency=0   #InnoDB线程并发数

innodb_io_capacity=200  #IO容量,可用于InnoDB后台任务的每秒I/O操作数(IOPS);

innodb_io_capacity_max=400  #IO最大容量,InnoDB在这种情况下由后台任务执行的最大IOPS数;

innodb_lock_wait_timeout=50  #InnoDB引擎锁等待超时时间,默认50(单位:秒)

innodb_buffer_pool_size=512M #InnoDB缓冲池大小,默认128M

innodb_buffer_pool_instances=4  #InnoDB缓冲池划分区域数

innodb_max_dirty_pages_pct=75  #缓冲池最大允许脏页比例,默认75

innodb_flush_method=O_DIRECT  #日志刷新方法,默认为fdatasync

innodb_flush_log_at_trx_commit=2  #事务日志刷新方式,默认为0

transaction_isolation=REPEATABLE-READ  #事务隔离级别,默认REPEATABLE-READ

innodb_data_home_dir=/usr/local/mysql/data  #表空间文件路径,默认保存在MySQL的datadir中

innodb_data_file_path=ibdata1:128M:autoextend  #表空间文件大小

innodb_file_per_table=ON    #每表独立表空间

innodb_log_group_home_dir=/usr/local/mysql/data  #redoLog文件目录,默认保存在MySQL的datadir中

innodb_log_files_in_group=2  #日志组中的日志文件数,默认为2

innodb_log_file_size=128M   #日志文件大小,默认为48MB

innodb_log_buffer_size=32M  #日志缓冲区大小,默认为16MB

##MyISAM配置选项

key_buffer_size=32M  #索引缓冲区大小,默认8M

read_buffer_size=4M  #顺序读缓冲区大小,默认128K

read_rnd_buffer_size=4M  #随机读缓冲区大小,默认256K

bulk_insert_buffer_size=8M   #块插入缓冲区大小,默认为8M

myisam_sort_buffer_size=8M  #MyISAM排序缓冲区大小,默认8M

#myisam_max_sort_file_size=1G  #MyISAM排序最大临时文件大小

#myisam_repair_threads=1    #MyISAM修复线程

skip-external-locking        #跳过外部锁定,启用文件锁会影响性能

##日志配置选项

log_output=FILE    #日志输出目标TABLE(输出到表)、FILE(输出到文件)、NONE(不输出),可选择一个或多个以逗号分隔

log_error=/usr/local/mysql/logs/error.log   #错误日志存放路径

log_error_verbosity=1  #错误日志过滤,允许的值为1(仅错误),2(错误和警告),3(错误、警告和注释);默认值为3

log_timestamps=SYSTEM  #错误日志消息格式,日志中显示时间戳的时区,UTC(默认值)和SYSTEM(本地系统时区)

general_log=ON        #开启查询日志,一般选择不开启,因为查询日志记录很详细,会增大磁盘IO开销,影响性能。

general_log_file=/usr/local/mysql/logs/general.log   #通用查询日志存放路径。

##慢查询日志配置选项

slow_query_log=ON   #开启慢查询日志

slow_query_log_file=/usr/local/mysql/logs/slowq.log  #慢查询日志存放路径

long_query_time=2   #慢查询时间,默认10(单位:秒)

min_examined_row_limit=100  #最小检查行限制,检索的行数必须达到此值才可被记为慢查询

log_slow_admin_statements=NO  #记录慢查询管理语句

log_queries_not_using_indexes=ON  #记录查询未使用索引语句

log_throttle_queries_not_using_indexes=5  #记录未使用索引速率限制,默认为0不限制。

log_slow_slave_statements=ON   #记录从库复制的慢查询,作为从库时生效,从库复制中如果有慢查询也将被记录。

##复制配置选项

server-id=1   #MySQL服务唯一标识

log-bin=mysql-bin  #开启二进制日志,默认位置是datadir数据目录

log-bin-index=mysql-bin.index   #binlog索引文件

binlog_format=MIXED  #binlog日志格式,分三种:STATEMENT、ROW或MIXED,mysql5.7.7之前默认为STATEMENT,之后默认为ROW

binlog_cache_size=1M   #binlog缓存大小,默认32KB

max_binlog_cache_size=1G  #binlog最大缓存大小,推荐最大值为4GB

max_binlog_size=256M  #binlog最大文件大小,最小值为4096字节,最大值和默认值为1GB

expire_logs_days=7   #binlog过期天数,默认为0,表示不自动删除。

log_slave_updates=ON  #binlog级联复制

sync_binlog=1   #binlog同步频率;为0:禁用同步(最佳性能,但可能丢失事务);为1:开启同步(影响性能,但最安全,不会丢失任何事务);为N:操作N次事务后同步一次。

relay_log=relay-bin  #relaylog文件路径,默认位置是datadir数据目录

relay_log_index=relay-log.index   #relaylog索引文件

max_relay_log_size=256M  #relaylog最大文件大小

#relay_log_pruge=ON  #中继日志自动清除,默认值为1(ON)

relay_log_recovery=ON  #中继日志自动恢复

auto_increment_offset=1  #自增值偏移量

auto_increment_increment=1  #自增值自增量

slave_net_timeout=60  #从机连接超时时间

replicate-wild-ignore-table=mysql.%  #复制时忽略的数据库表,告诉从线程不要复制到与给定通配符模式匹配的表

skip-slave-start  #跳过Slave启动,Slave复制进程不随MySQL启动而启动。

##其他配置选项

#memlock=ON  #开启内存锁,此选项生效需系统 支持mlockall() >调用,将mysqld进程锁定在内存中,防止遇到操作系统导致mysqld交换到磁盘的问题。

[mysqldump]  #mysqldump数据库备份工具

quick        #强制mysqldump从服务器查询取得记录直接输出,而不是取得所有记录后将它们缓存到内存中。

max_allowed_packet=16M  #最大传输数据字节,使用mysqldump工具备份数据库时,某表过大会导致备份失败,需要增大该值(大于>表大小即可)

[myisamchk]             #使用myisamchk实用程序可以用来获得有关你的数据库表的统计信息或检查、修复、优化它们

key_buffer_size=32M         #索引缓冲区大小

myisam_sort_buffer_size=8M  #排序缓冲区大小

read_buffer_size=4M         #读取缓冲区大小

write_buffer_size=4M        #写如缓冲区大小

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

6.初始化数据库目录

#使用my.cnf配置文件和mysql用户初始化数据库

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

或者使用相对路径的写法

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

初始化成功后会生成root账户的默认密码。

[root@localhost mysql]#vim  /usr/local/mysql/logs/error.log
将该密码复制并保存,因为后面需要使用该密码登录到MySQL中修改密码。

或者可用查看3306端口是否已正常监听:

[root@localhost mysql]# ss -anptul | grep 3306

注意:初始化只能执行一次有效,如果想要再次初始化,必须要把目录/usr/local/mysql/data、/usr/local/mysql/tmp、/usr/local/mysql/etc、/usr/local/mysql/logs里面的内容删除,再次执行初始化才能成功。

5.6.3.2.7配置环境变量并启动mysql服务

配置环境变量(系统才能知道服务在哪里)

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

在文件末尾加入下面代码,然后输入:wq保存并退出(没有权限时,可使用:q!强制不保存退出,换root用户重来)

export  MYSQL_HOME=/usr/local/mysql   #声明安装路径(相当于告诉系统mysql安装在哪)

export  PATH=$MYSQL_HOME/bin:$PATH  #声明命令路径

#文件保存退出后,命令行输入下面命令,使得环境变量立即生效

source  /etc/profile

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

#把启动服务文件复制到系统服务配置目录下,改名为mysql。

(因为不是使用yum安装或者rpm安装的软件,是不能直接使用systemctl命令直接管理的,若要使用systemctl命令管理这个软件,要把启动服务文件复制到系统服务配置目录下)

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

#重新加载系统服务配置,使立即生效。

[root@localhost mysql]#systemctl  daemon-reload 或chkconfig  --add  mysql

#启动mysql服务

[root@localhost mysql]#systemctl  start  mysql  

#重启服务

[root@localhost mysql]#systemctl  restart  mysql

#查看服务状态

[root@localhost mysql]# systemctl  status   mysql

5.6.3.2.8查看数据库密码并修改

#查看数据库初始密码

[root@localhost mysql]#cat  /var/log/mysqld.log  | grep  password    #rpm安装时

[root@localhost mysql]#cat  /usr/local/mysql/logs/error.log  | grep  password #源码安装时

#登录数据库

[root@localhost mysql]# mysql  -uroot  -p  或 mysql  -u  root  -p

Enter password:   #输入上面查到的密码

#进入数据库后第一步首先设置密码

mysql> set  password=password('1234.Com');  

或者

mysql> alter  user  root@'localhost'  identified  by  '1234.Com';

#查看密码的策略

mysql> SHOW  VARIABLES  LIKE  'validate_password%';

Empty set (0.00 sec)

注意如下:

rpm安装方式:默认的密码复杂度为8位,包含数字、大小些字母、特殊符号

源码安装方式:默认没有密码策略,如下所示:

#设置密码策略

set  global  validate_password_length=8;  #修改密码策略,修改密码最小长度

set  global  validate_password_policy=LOW;  #设置安全级别;0宽容模式;LOW安全级别为低;

set  global  validate_password_mixed_case_count=0; #混合模式,0关闭大小写。

set  global  validate_password_number_count=0; #字母

set  global  validate_password_special_char_count=0;  #特殊符号

5.6.3.2.9设置运行远程访问MySQL

#将root用户的可访问主机改为%,即任何主机都可访问。

root@mysql 01:03:16>update  user  set  user.Host='%'  where user.User='root';

#执行生效命令,使设置立即生效

root@mysql 01:03:33>flush  privileges;

#退出登录

root@mysql 01:06:58>exit

5.6.3.2.10防火墙放行MySQL监听的端口3306(即允许其他主机访问mysql的3306端口)

#如果登录了数据库,就先退出登录

root@mysql 01:06:58>exit

#防火墙放行MySQL监听的端口3306(永久生效)

[root@localhost mysql]# firewall-cmd  --permanent  --zone=public  --add-port=3306/tcp   

#使防火墙配置立即生效

[root@localhost mysql]# firewall-cmd  --reload

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值