zoukankan      html  css  js  c++  java
  • mysql二进制安装

    系统版本:
    [root@lbg mysql3306]# cat /etc/redhat-release 
    CentOS Linux release 7.4.1708 (Core)
    [root@lbg mysql3306]# uname -r
    3.10.0-693.el7.x86_64
     
    mysql5.6二进制安装:
    1.关闭防火墙,修改主机名,配置ip
     [root@master ~]# hostname lbg

    [root@master ~]# hostnamectl set-hostname lbg          ---vim  /etc/sysconfig/network

    [root@lbg /]# systemctl stop firewalld.service

    [root@lbg /]# systemctl disable firewalld.service

    [root@lbg /]# setenforce 0

    [root@lbg /]# vim /etc/selinux/config         ---SELINUX=disabled

    [root@lbg /]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

    TYPE=Ethernet

    PROXY_METHOD=none

    BROWSER_ONLY=no

    BOOTPROTO=none

    DEFROUTE=yes

    IPV4_FAILURE_FATAL=no

    NAME=ens33

    DEVICE=ens33

    ONBOOT=yes

    IPADDR0="192.168.88.8"

    PREFIX0="24"

    [root@lbg /]# ifconfig ens33 192.168.88.8/24 up

    [root@lbg /]# systemctl restart network

    2.创建目录放置安装包并解压

    [root@lbg ~]# mkdir /soft

    [root@lbg soft]# ls

    my.cnf  mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

    [root@lbg soft]# tar xvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz 

    [root@lbg soft]# mv mysql-5.6.39-linux-glibc2.12-x86_64    /usr/local/mysql  ---不要新建/usr/local/mysql

    说明:如果没有特殊情况,一般把二进制的安装包解放置到/usr/local/mysql下面,因为其为mysql默认安装目录。


    3.创建用户和数据目录,修改权限,添加环境变量

     [root@lbg soft]# useradd mysql

    [root@lbg soft]# mkdir -p /home/mysql3306/mysql3306

    [root@lbg soft]# mkdir -p /home/mysql3306/logs

    [root@lbg soft]# chown -R mysql.mysql /home/mysql3306

    [root@lbg soft]# chown -R mysql.mysql /usr/local/mysql

    [root@lbg logs]# vim /etc/profile

    export MYSQL_HOME=/usr/local/mysql

    export PATH=$PATH:$MYSQL_HOME/bin

    4.修改配置参数文件

    [root@lbg soft]# vim my.cnf

    [root@lbg soft]# mv -f /soft/my.cnf   /etc/my.cnf

    注意:socket文件的具体目录不用创建(/tmp/mysql3306.sock).当启动mysql时自动创建.


    5.mysql5.6初始化

    先安装依赖包:

    [root@lbg soft]# yum -y install  perl-Data-Dumper

    mysql5.6初始化:

    [root@lbg soft]# /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --user=mysql

    说明:初始化若出现两个OK即初始化成功.可查看/home/mysql3306/mysql3306里文件。

    初始化目的:mysql有表结构 系统文件 数据字典等初始信息,需要进行初始化,初始化只需要在第一次使用的时候进行.(root用户运行,指定usermysql即可.) 初始化的目录里不能有文件,初始化时defaults-file最后要写上,否则会默认读/etc/my.cnf 文件,若配置文件名不为my.cnf,则可能出现问题。

    执行mysql_install_db脚本后,初始化过程中,进行了什么操作?

     1.检查相关传入参数

    2.检查相关的数据目录是否存在

    3.创建相关的系统表结构

    4.完成并且打印提示


    6.mysql5.6启动

     [root@lbg mysql3306]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

    启动流程:

     MySQL程序首先检查环境变量,然后检查配置文件,最后检查终端的选项,说明终端指定选项优先级最高.

    说明:注意启动用/usr/local/mysql/bin/mysqld_safe,而非使用/usr/local/mysql/bin/mysqld,但实际上/usr/local/mysql/bin/mysqld_safe是调用/usr/local/mysql/bin/mysqld文件的。

    mysqld_safe在启动的时候的作用:

    1.检查传入参数

    2.检查相关路径

    4.对配置文件进行检查,并且对配置文件进行解析

    5.启动mysqld

    6.启动时判断进程号是否存在,如果存在报错,不存在删除进程文件(如果有的话),如果无法删除,报错。

    7.如果启动没有给参数会使用默认参数

    8.启动过程中会检查相关表结构是否损坏,如果有异常关闭而造成了表结构的损坏,使用mysqld_safe无法启动,这个时候可以使用mysqld启动,然后对相应的表结构进行修复,或者重建。

    9.服务器异常关闭,会自动restart(守护进程)

    选用mysqld_safe的好处:

    1.mysqld_safe增加了安全特性

    2.防止启动多个同一端口的mysql实例

    3.检查表结构是否完整

    2.mysqld_safe 可以使数据库restart,打印更加全面的日志信息.


    7.mysql登录

     [root@lbg mysql3306]# /usr/local/mysql/bin/mysql
    说明:在本地使用,默认用户是root,默认端口是3306,实际是通过读取了参数文件my.cnf中[client]模块下的socket参数指定的socket文件。

    mysql登录方式说明:

     mysql客户端远程链接mysql server的过程中,其实是使用tcpip协议,发送了指定的协议数据包,所有的数据库远程链接过程中,基本都是采⽤这种方法。⽽本地采⽤socket链接就是使⽤物理⽂件,采⽤Unix Socket协议,效率最高。查看socket文件位置:mysql> show variables like 'socket';

    在使用正确的MySQL链接进入数据库后,⾸先会进行权限的对比,对比mysql.user表中的数据,看链接用户是否有链接mysql.server的权限。


    8.设置登录权限和密码
     mysql> select user,host,password from mysql.user;       ---第1次密码为空,所以可以无密码登录。
    +------+-----------+----------+
    | user | host      | password |
    +------+-----------+----------+
    | root | localhost |          |
    | root | lbg          |          |
    | root | 127.0.0.1 |          |
    | root | ::1            |          |
    |         | localhost |          |
    |         | lbg          |          |
    +------+-----------+----------+
    6 rows in set (0.00 sec)
    删除其他用户,只保留root/localhost即可.

    delete from mysql.user where user='';

    delete from mysql.user where host='::1';

    delete from mysql.user where host='lbg';

    delete from mysql.user where host='127.0.0.1';

    mysql赋予权限,授权后用户就有了密码.登录就需密码:

    grant all on *.* to root@'localhost' identified by 'root' with grant option;

    grant all on *.* to root@'%' identified by 'root' with grant option;

    flush privileges;     ---刷新系统权限相关表。

    说明:*.* 指所有库的所有对象, *数据库  *表    如: test1.*     test1.t1

    root@'localhost'  指root用户名在localhost网段。root@'%'指代所有网段,例如:root@'192.168.2.%'

    identified by 'root'; 密码是root 。            with grant option 给该用户复权权限。 

    本地登录数据库:

     [root@lbg ~]# /usr/local/mysql/bin/mysql -uroot -proot -S /tmp/mysql3306.sock   --默认端口号
     [root@lbg ~]# /usr/local/mysql/bin/mysql -uroot -proot      ---读参数文件中的socket文件
     [root@lbg ~]# /usr/local/mysql/bin/mysql -uroot -p        ---不明文写密码
     [root@lbg ~]# mysql -p                    ---默认root用户登录

    使用远程连接数据库:

     [root@lbg ~]# /usr/local/mysql/bin/mysql -uroot -proot -h192.168.88.8 -P3306


    9.关闭数据库

    正常关闭方式:

     [root@lbg ~]#  /usr/local/mysql/bin/mysqladmin   -uroot -proot -S /tmp/mysql3306.sock shutdown
    说明:mysqladmin还可用于修改密码。
    ⽆密码修改: mysqladmin -u root password 123456      --设置密码为123456
    已有密码修改:mysqladmin -u root -p password 123456     ---会提示输入旧密码。
    直接kill关闭数据库:
     [root@lbg ~]# ps -ef |grep mysql

    root      2543  2127  0 15:43 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql

    mysql     3402  2543 22 15:43 pts/1    00:00:01 /usr/local/mysql/bin/mysqld -basedir=/usr/local/mysql --datadir=/home/mysql3306/mysql3306 --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/home/mysql3306/logs/mysql-error.log --open-files-limit=65535 --pidfile=/home/mysql3306/mysql.pid --socket=/tmp/mysql3306.sock --port=3306

    [root@lbg ~]# kill   3402  2543        ---子进程和父进程都关闭


    10.删除mysql
    pkill mysql

    rm -rf /usr/local/mysql

    rm -rf /home/mysql3306/mysql3306/*

    rm -rf /home/mysql3306/logs/*




    mysql5.7安装:
    mysql5.7安装步骤中与mysql5.6的不同在于初始化,其他大致相同。
    [root@lbg soft]# mv mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/mysql
     
     1.mysql5.7初始化:
     [root@lbg soft]# /usr/local/mysql/bin/mysqld  --defaults-file=/etc/my.cnf --initialize-insecure --basedir=/usr/local/mysql --user=mysql
    说明:
    初始化是使用 /usr/local/mysql/bin/mysqld。

    --defaults-file=/etc/my.cnf  一定写到第一个参数

    --initialize-insecure 初始化(不会设置初始化密码 5.6一样,密码为空)

    --initialize 初始化(会设置初始化密码,生成随机密码,eror日志可以找到)

     
    2.查看初始化后的文件
    [root@lbg mysql3306]# ls
    auto.cnf        ibdata1      ib_logfile1  mysql-bin.000001  performance_schema  undo001  undo003
    ib_buffer_pool  ib_logfile0  mysql        mysql-bin.index   sys                 undo002
     
    3.mysql5.7启动登录
    [root@lbg soft]# mysqld_safe --user=mysql &                    ---启动
    [root@lbg soft]# mysql                                                         ---登录
     
    4.授权、查看系统版本
    mysql> select user,host,authentication_string from mysql.user; --不再是password了。
    mysql>  delete from mysql.user where user like '%mysql%';
    mysql>  grant all on *.* to root@'localhost' identified by 'root' with grant option;
    mysql> grant all on *.* to root@'%' identified by 'root' with grant option;
    mysql> flush privileges;
    mysql> show variables like '%version%';       ---查看mysql系统版本
     
    5.密码丢失的处理方法
    密码丢失 ,启动时加上参数:skip-grant-tables:

    /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf  --skip-grant-tables --user=mysql &

    然后登陆:  /usr/local/mysql/bin/mysql

    再重新给密码,不能用grant all on *.* to root@'localhost' identified by 'root';会报错.

    mysql> grant all on *.* to root@'localhost' identified by 'root';

    ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

    使用update更新密码.用函数password().

    update mysql.user set authentication_string=password('root') where user='root';

    #重新载入权限表

    flush privileges;

    mysql的配置文件:

     1.mysql5.6配置文件:
     
     [client]
    port            = 3306
    socket          = /tmp/mysql3306.sock
     
    [mysqld]
    port            = 3306
    socket          = /tmp/mysql3306.sock
    datadir         = /home/mysql3306/mysql3306
    #read_only       = on
     
    #--- GLOBAL ---#
    lower_case_table_names  = 1
    log-output              = FILE
    log-error               = /home/mysql3306/logs/mysql-error.log
    #general_log
    general_log_file        = /home/mysql3306/logs/mysql.log
    pid-file                = /home/mysql3306/mysql.pid
    slow-query-log          = 1
    slow_query_log_file     = /home/mysql3306/logs/mysql-slow.log
    tmpdir                  = /tmp/
    long_query_time         = 2
    innodb_force_recovery   = 0
    #innodb_buffer_pool_dump_at_shutdown = 1
    #innodb_buffer_pool_load_at_startup = 1
    #--------------#
     
    #thread_concurrency      = 8
    thread_cache_size       = 51
    table_open_cache        = 16384
    open_files_limit        = 65535
    table_definition_cache  = 16384
    sort_buffer_size        = 2M
    join_buffer_size        = 2M
    read_buffer_size        = 2M
    read_rnd_buffer_size    = 8M
    key_buffer_size         = 32M
    bulk_insert_buffer_size = 16M
    myisam_sort_buffer_size = 64M
    tmp_table_size          = 32M
    max_heap_table_size     = 16M
    query_cache_size       = 32MB
     
    #gtid_mode=on
    #log_slave_updates=1
    #enforce_gtid_consistency=1
     
    #--- NETWORK ---#
    back_log                = 103
    max-connections         = 512
    max_connect_errors      = 100000
    max_allowed_packet      = 32M
    interactive_timeout     = 600
    wait_timeout            = 600
    skip-external-locking
    #max_user_connections    = 0
    external-locking        = FALSE
    #skip-name-resolve
     
    #--- REPL ---#
    server-id               = 88083306
    sync_binlog             = 1
    log-bin                 = mysql-bin
    binlog_format           = row
    expire_logs_days        = 10
    relay-log               = relay-log
    replicate-ignore-db     = test
    log_slave_updates       =1
    #skip-slave-start
    binlog_cache_size       =4M
    max_binlog_cache_size   =8M
    max_binlog_size         =1024M
     
    #--- INNODB ---#
    default_storage_engine          = InnoDB
    innodb_data_file_path           = ibdata1:1024M:autoextend
    innodb_buffer_pool_size         = 800M
    innodb_buffer_pool_instances    = 1
    innodb_log_files_in_group       = 2
    innodb_log_file_size            = 256MB
    innodb_log_buffer_size          = 16M
    innodb_flush_log_at_trx_commit  = 2
    innodb_lock_wait_timeout        = 30
    innodb_flush_method             = O_DIRECT
    innodb_max_dirty_pages_pct      = 75
    innodb_io_capacity              = 200
    innodb_thread_concurrency       = 32
    innodb_open_files               = 65535
    innodb_file_per_table           = 1
    transaction_isolation           = REPEATABLE-READ
    innodb_locks_unsafe_for_binlog  = 0
    #innodb_purge_thread            = 4
    skip_name_resolve               = 1
     
    [mysqldump]
    quick
    max_allowed_packet = 32M
     
    [mysql]
    auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates
    default_character_set=utf8
     
    [mysqlhotcopy]
    interactive-timeout

     2.mysql5.7配置文件:
     [client]
    port                            = 3306
    socket                          = /tmp/mysql3306.sock
    default_character_set           = utf8mb4
     
    [mysql]
    default_character_set           = utf8mb4
     
    [mysqld]
    lower_case_table_names              = 1
    port                            = 3306
    basedir                         = /usr/local/mysql
    datadir                         = /home/mysql3306/mysql3306
    socket                          = /tmp/mysql3306.sock
    pid_file                        = /home/mysql3306/mysql3306.pid
    tmpdir                          = /tmp/
     
    skip_name_resolve               = 1
    character_set_server            = utf8mb4
    collation_server                = utf8mb4_unicode_ci
     
    max_connections                 = 2000
    max_connect_errors              = 10000
    interactive_timeout             = 600
    wait_timeout                    = 600
    table_open_cache                = 2048
    query_cache_type                = 0
    #query_cache_size               = 64M
    #query_cache_limit              = 2M
    thread_cache_size               = 51
    max_allowed_packet              = 16M
     
    tmp_table_size                  = 256M
    max_tmp_tables                  = 128
    max_heap_table_size             = 96M
    sort_buffer_size                = 4M
    read_buffer_size                = 4M 
    join_buffer_size                = 4M
    read_rnd_buffer_size            = 8M 
    bulk_insert_buffer_size         = 64M 
     
    log_error                       = /home/mysql3306/logs/mysql-error.log
    log_timestamps                  = system
    slow_query_log                  = 1
    slow_query_log_file             = /home/mysql3306/logs/mysql-slow.log
    long_query_time                 = 1
    log_queries_not_using_indexes   = 1
    log_throttle_queries_not_using_indexes =10
    log_slow_admin_statements       = 1
    log_slow_slave_statements       = 1
    min_examined_row_limit          = 100
    log_queries_not_using_indexes   = 1
     
    log_output                      = FILE
    relay_log                       = /home/mysql3306/mysql3306/mysql-relay
     
    #binlog
    server_id                       = 88083306
    log_bin                         = /home/mysql3306/mysql3306/mysql-bin
    expire_logs_days                = 7
    binlog_format                   = row
    max_binlog_size                 = 1024M
    max_binlog_cache_size           = 8G
    binlog_cache_size               = 4M
    sync_binlog                     = 1
    master_info_repository          = TABLE
    relay_log_info_repository       = TABLE
    relay_log_recovery              = ON
    log_slave_updates                       = 1
     
    #rep
     
    slave-parallel-type=LOGICAL_CLOCK
    slave-parallel-workers=16
     
    #innodb
    default_storage_engine          = InnoDB
    innodb_page_size                = 16384
    innodb_data_home_dir            = /home/mysql3306/mysql3306/
    innodb_data_file_path           = ibdata1:512M:autoextend
    innodb_log_group_home_dir       = /home/mysql3306/mysql3306
    innodb_buffer_pool_instances    = 1
    innodb_buffer_pool_size         = 600M
    innodb_buffer_pool_dump_pct     = 40
    innodb_page_cleaners            = 8
    innodb_log_file_size            = 256M
    innodb_log_files_in_group       = 2
    innodb_log_buffer_size          = 32M  #default 16M
    innodb_flush_log_at_trx_commit  = 1
    innodb_lock_wait_timeout        = 30
    innodb_strict_mode              = 1
    innodb_print_all_deadlocks      = 1
    innodb_buffer_pool_load_at_startup = 1
    innodb_buffer_pool_dump_at_shutdown = 1
    innodb_buffer_pool_dump_pct     = 40
    innodb_open_files               = 65536
    innodb_file_per_table           = 1
    innodb_lock_wait_timeout        = 30
    innodb_read_io_threads          = 8
    innodb_write_io_threads         = 8
    innodb_io_capacity              = 200
    innodb_flush_log_at_trx_commit  = 1
    innodb_flush_method             = O_DIRECT
    innodb_purge_threads            = 4
    innodb_support_xa               = 1
    innodb_max_dirty_pages_pct      = 75
    transaction_isolation           = READ-COMMITTED
    innodb_page_cleaners            = 16
    explicit_defaults_for_timestamp = 1
     
    #undo
    innodb_undo_directory           = /home/mysql3306/mysql3306/
    innodb_undo_logs                = 128
    innodb_undo_tablespaces         = 3
    innodb_undo_log_truncate        = 1
    innodb_max_undo_log_size        = 1000M
    innodb_purge_rseg_truncate_frequency = 128
     
    [mysqldump]
    max_allowed_packet              = 16M
     
     
  • 相关阅读:
    rpm的制作 spec文件写法
    RPM 打包技术与典型 SPEC 文件分析
    生成器
    闭包
    内置函数
    函数递归
    高阶函数
    匿名函数
    文件操作
    bytes
  • 原文地址:https://www.cnblogs.com/lbg-database/p/10109944.html
Copyright © 2011-2022 走看看