MySQL | mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz安装

  • 用户mysqladmin
  • 密码1234
  • 安装路径 /opt/module/mysql
  • 数据目录 //opt/module/mysql/data
  • 端口 3306
  1. 解压及创建目录
  • 解压到/opt/module
    [root@localhost module]# tar xzvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
  • 改名为mysql
    [root@localhost module]# mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql
  • 创建目录mysql/arch ,mysql/data ,mysql/tmp
    [root@localhost module]# mkdir mysql/arch mysql/data mysql/tmp
  1. 修改my.cnf(见文件) 没有就创建
    [root@localhost module]# vi /etc/my.cnf
## 文件内容
[client]
port            = 3306    #监听端口
socket          = /opt/module/mysql/data/mysql.sock    #socket通信设置
default-character-set=utf8mb4

[mysqld]    #服务器端配置
port            = 3306    #监听端口
socket          = /opt/module/mysql/data/mysql.sock    #socket通信设置

#bind-address = 0.0.0.0  #监听的ip地址
#server-id = 1  #MySQL服务的ID

#*** skip options 相关选项 ***#

skip-slave-start
#启动 mysql,不启动复制

skip-external-locking
#不使用系统锁定,要使用 myisamchk,必须关闭服务器 ,避免 MySQL的外部锁定,减少出错几率增强稳定性。

#*** MyISAM 相关选项 ***#

key_buffer_size = 256M
#指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。如果是以InnoDB引擎为主的DB,专用于MyISAM引擎的 key_buffer_size 可以设置较小,8MB 已足够  如果是以MyISAM引擎为主,可设置较大,但不能超过4G. 在这里,强烈建议不使用MyISAM引擎,默认都是用InnoDB引擎.注意:该参数值设置的过大反而会是服务器整体效率降低!

sort_buffer_size = 2M
#查询排序时所能使用的缓冲区大小。排序缓冲被用来处理类似 ORDER BY 以及 GROUP BY 队列所引起的排序.一个用来替代的基于磁盘的合并分类会被使用.查看 “Sort_merge_passes” 状态变量. 在排序发生时由每个线程分配 注意:该参数对应的分配内存是每连接独占!如果有 100 个连接,那么实际分配的总共排序缓冲区大小为 100 × 6 =600MB,所以,对于内存在 4GB 左右的服务器推荐设置为 6-8M。 

read_buffer_size = 2M
#读查询操作所能使用的缓冲区大小。和 sort_buffer_size 一样,该参数对应的分配内存也是每连接独享!用来做 MyISAM 表全表扫描的缓冲大小.当全表扫描需要时,在对应线程中分配.

read_rnd_buffer_size = 4M
#MyISAM 以索引扫描(Random Scan)方式扫描数据的 buffer大小

query_cache_size= 32M
#指定 MySQL 查询缓冲区的大小。可以通过在 MySQL 控制台执行以下命令观察:
#代码:
#> SHOW VARIABLES LIKE '%query_cache%';
#> SHOW STATUS LIKE 'Qcache%';如果 Qcache_lowmem_prunes 的值非常大,则表明经常出现缓冲不够的情况;
#如果 Qcache_hits 的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲; Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。
#memlock # 如果你的系统支持 memlock() 函数,你也许希望打开此选项用以让运行中的 mysql 在在内存高度紧张的时候,数据在内存中保持锁定并且防止可能被 swapping out,此选项对于性能有益

max_allowed_packet = 16M
# 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB 字段一起工作时相当必要), 每个连接独立的大小.大小动态增加。 设置最大包,限制server接受的数据包大小,避免超长SQL的执行有问题 默认值为16M,当MySQL客户端或mysqld
# 服务器收到大于 max_allowed_packet 字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与 MySQL 服务器的连接”错误。默认值 16M。

myisam_sort_buffer_size=128M
#MyISAM 设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE 或用 CREATE INDEX 创建索引或 ALTER TABLE 过程中排序 MyISAM 索引分配的缓冲区

tmp_table_size=32M
#临时表的最大大小,如果超过该值,则结果放到磁盘中,此限制是针对单个表的,而不是总和.

table_open_cache = 512

thread_cache_size = 8
# 我们在 cache 中保留多少线程用于重用.当一个客户端断开连接后,如果 cache 中的线程还少于 thread_cache_size,则客户端线程被放入 cache 中.这可以在你需要大量新连接的时候极大的减少线程创建的开销(一般来说如果你有好的线程模型的话,
#这不会有明显的性能提升.)服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,
#如果有很多新的线程,增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用
#根据物理内存设置规则如下:
#1G  —> 8
#2G  —> 16
#3G  —> 32
#大于3G  —> 64
wait_timeout = 86400
#等待关闭连接的时间

interactive_timeout = 86400
#关闭连接之前,允许 interactive_timeout(取代了wait_timeout)秒的不活动时间。客户端的会话 wait_timeout 变量被设为会话interactive_timeout 变量的值。如果前端程序采用短连接,建议缩短这2个值, 如果前端程序采用长连接,可直接注释掉这两个选项,默认配置(8小时)  

max_connections = 600
#指定MySQL允许的最大连接进程数。如果在访问数据库时经常出现"Too Many Connections"的错误提 示,则需要增大该参数值
# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 32 

#isolation level and default engine 
default-storage-engine = INNODB
transaction-isolation = READ-COMMITTED

server-id  = 1739    #MySQL服务的ID
basedir     = /opt/module/mysql          #MySQL程序路径
datadir     = /opt/module/mysql/data    #数据目录
pid-file     = /opt/module/mysql/data/hostname.pid    #pid文件路径

#open performance schema
log-warnings
sysdate-is-now

binlog_format = ROW
log_bin_trust_function_creators=1
log-error  = /opt/module/mysql/data/hostname.err
log-bin = /opt/module/mysql/arch/mysql-bin
expire_logs_days = 7

innodb_write_io_threads=16

relay-log  = /opt/module/mysql/relay_log/relay-log
relay-log-index = /opt/module/mysql/relay_log/relay-log.index
relay_log_info_file= /opt/module/mysql/relay_log/relay-log.info

log_slave_updates=1
gtid_mode=OFF
enforce_gtid_consistency=OFF

# slave
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON

#other logs
#general_log =1
#general_log_file  = /opt/module/mysql/data/general_log.err
#slow_query_log=1
#slow_query_log_file=/opt/module/mysql/data/slow_log.err

#for replication slave
sync_binlog = 500


#for innodb options 
innodb_data_home_dir = /opt/module/mysql/data/
innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend

innodb_log_group_home_dir = /opt/module/mysql/arch
innodb_log_files_in_group = 4
innodb_log_file_size = 1G
innodb_log_buffer_size = 200M

#根据生产需要,调整pool size 
innodb_buffer_pool_size = 2G
#innodb_additional_mem_pool_size = 50M #deprecated in 5.6
tmpdir = /opt/module/mysql/tmp

innodb_lock_wait_timeout = 1000
#innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 2

innodb_locks_unsafe_for_binlog=1

#innodb io features: add for mysql5.5.8
performance_schema
innodb_read_io_threads=4
innodb-write-io-threads=4
innodb-io-capacity=200
#purge threads change default(0) to 1 for purge
innodb_purge_threads=1
innodb_use_native_aio=on

#case-sensitive file names and separate tablespace
innodb_file_per_table = 1
lower_case_table_names=1

[mysqldump]
quick
max_allowed_packet = 128M

[mysql]
no-auto-rehash
default-character-set=utf8mb4

[mysqlhotcopy]
interactive-timeout

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
  1. 创建用户组及用户
  • [root@localhost module]# groupadd -g 101 dba

创建组id为101 名为dba的组

  • [root@localhost module]# useradd -u 514 -g dba -G root -d /opt/module/mysql mysqladmin

增加用户id为514 用户的主组为dba 用户的附加组为root 用户的家目录为/opt/module/mysql mysqladmin是用户名
useradd表示:增加用户
-u 514:表示指定用户的id为514
-g data:表示指定用户的主组为data
-G root:表示指定用户的附加组为root
-d /opt/module/mysql:表示用户的家目录
mysqladmin:表示用户名
[root@localhost module]# id mysqladmin
Linux id命令用于显示用户的ID,以及所属群组的ID。
显示:uid=514(mysqladmin) gid=101(dba) groups=101(dba),0(root)

一般不需要设置mysqladmin的密码,直接从root或者LDAP用户sudo切换

  • [root@localhost module]# passwd mysqladmin
    Changing password for user mysqladmin.
    New UNIX password: //填写mysqladmin用户的密码 我写1234
    BAD PASSWORD: it is too simplistic/systematic //警告太简单
    Retype new UNIX password: //不管 再次填写
    passwd: all authentication tokens updated successfully. //成功

if user mysqladmin is existing,please execute the following command of usermod.
[root@localhost module]# usermod -u 514 -g dba -G root -d /opt/module/mysql mysqladmin
usermod 用于修改用户帐号
-u ][用户帐号]
-g <主群组>
-d <登入目录>
-G <群组>
要修改用户

  1. copy 环境变量配置文件至mysqladmin用户的目录中(上面配置过mysql用户的家目录),为了以下步骤配置个人环境变量
    [root@localhost module]# cp /etc/skel/.* /opt/module/mysql --important

/etc/skel/目录是用来存放新用户配置文件的目录,当我们添加新用户的时候,这个目录下的所有文件会自动被复制到新添加的用户的家目录下。
这个目录下的所有文件都是隐藏文件(以.点开头的文件)。
通过修改、添加、删除/etc/skel目录下的文件,可为新创建的用户提供统一的、标准的、初始化用户环境。

  1. 配置环境变量
    [root@localhost module]# vi mysql/.bash_profile
# .bash_profile
# Get the aliases and functions

if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
export MYSQL_BASE=/opt/module/mysql
export PATH=${MYSQL_BASE}/bin:$PATH


unset USERNAME

#stty erase ^H
set umask to 022
umask 022
PS1=`uname -n`":"'$USER'":"'$PWD'":>"; export PS1

## end
  1. 赋权限和用户组,切换用户mysqladmin,安装
    [root@localhost module]# chown mysqladmin:dba /etc/my.cnf
    [root@localhost module]# chmod 640 /etc/my.cnf
    [root@localhost module]# chown -R mysqladmin:dba /opt/module/mysql
    [root@localhost module]# chmod -R 755 /opt/module/mysql

  2. 配置服务及开机自启动
    [root@localhost module]# cd /opt/module/mysql

  • 将服务文件拷贝到init.d下,并重命名为mysql
    [root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysql
  • 赋予可执行权限
    [root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysql
  • 删除服务
    [root@localhost mysql]# chkconfig --del mysql
  • 添加服务
    [root@localhost mysql]# chkconfig --add mysql
    [root@localhost mysql]# chkconfig --level 345 mysql on
  1. 安装libaio及安装mysql的初始db
    [root@localhost mysql]# yum -y install libaio
    [root@localhost mysql]# sudo su - mysqladmin
    变为->localhost.ruoze:mysqladmin:/opt/module/mysql:>
    localhost.ruoze:mysqladmin:/opt/module/mysql:> bin/mysqld \
    --defaults-file=/etc/my.cnf \
    --user=mysqladmin \
    --basedir=/opt/module/mysql/ \
    --datadir=/opt/module/mysql/data/ \
    --initialize

按回车 出现完成
在初始化时如果加上 –initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中
(在5.6版本中是放在 ~/.mysql_secret 文件里,更加隐蔽)

  1. 查看临时密码
    localhost.localdomain:mysqladmin:/opt/module/mysql/data:>**cat hostname.err |grep password**
    2017-07-22T02:15:29.439671Z 1 [Note] A temporary password is generated for root@localhost: kFCqrXeh2y(0
    localhost.localdomain:mysqladmin:/opt/module/mysql/data:>

  2. 启动
    /opt/module/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

  3. 登录及修改用户密码
    localhost.localdomain:mysqladmin:/opt/module/mysql/data:>**mysql -uroot -p'kFCqrXeh2y(0'**

mysql: [Warning] Using a password on the command line interface can be insecure.  
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.11-log
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
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密码

mysql> alter user root@localhost identified by '1234';
Query OK, 0 rows affected (0.05 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' ;
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
Bye

  1. 重启
    localhost.localdomain:mysqladmin:/opt/module/mysql:> service mysql restart
    localhost.localdomain:mysqladmin:/opt/module/mysql/data:>mysql -uroot -p1234
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.11-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

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>