• MySQL二进制包安装及启动问题排查


    环境部署:VMware10.0+CentOS6.9(64位)+MySQL5.7.19(64位)
    一、操作系统调整

    # 更改时区
    1、先查看时区
    [root@localhost ~]# date -R
    Tue, 29 Aug 2017 20:13:00 -0700
    2、将Asia/shanghai-上海时区写入当前时区
    [root@localhost ~]# cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    cp: overwrite '/etc/localtime'? y
    3、再次查看时区
    [root@localhost ~]# date -R
    Wed, 30 Aug 2017 11:14:24 +0800
    
    # 更改主机名
    1、原主机名
    [root@localhost ~]# uname -a
    Linux localhost.localdomain 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    [root@localhost ~]# hostname
    localhost.localdomain
    2、先备份原文件再修改
    [root@localhost ~]# cp /etc/sysconfig/network /etc/sysconfig/network.`date +%Y%m%d.%H%M%S`
    [root@localhost ~]# ll /etc/sysconfig |grep network
    -rw-r--r--. 1 root root   46 Aug 30  2017 network
    -rw-r--r--. 1 root root   46 Aug 30 11:21 network.20170830.112114
    drwxr-xr-x. 4 root root 4096 May 11  2016 networking
    drwxr-xr-x. 2 root root 4096 Aug 30  2017 network-scripts
    [root@localhost ~]# vim /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=ZST1
    [root@localhost ~]#
    [root@localhost ~]# cp /etc/hosts /etc/hosts.`date +%Y%m%d.%H%M%S`
    [root@localhost ~]# vim /etc/hosts
    #添加记录,不要修改默认的127.0.0.1跟::1的记录,其他的系统服务会使用到的
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.85.132 ZST1
    192.168.85.133 ZST2
    192.168.85.134 ZST3
    [root@localhost ~]#
    
    # 设定linux运行级别为3(文本模式)
    1、查看当前运行的模式
    [root@localhost ~]# runlevel
    N 5
    2、设定linux运行级别为3
    [root@localhost ~]# vim /etc/inittab
    id:3:initdefault:
    3、重启服务器
    [root@localhost ~]# reboot
    View Code

    二、MySQL二进制包安装

    1、删除系统自带的旧rpm包(add)
    [root@ZST1 ~]# rpm -qa | grep -i mysql
    mysql-libs-5.1.73-8.el6_8.x86_64
    [root@ZST1 ~]# yum -y remove mysql-libs-5.1* 
    [root@ZST1 ~]# whereis mysql
    mysql:
    
    2官网下载二进制包Linux Generic,下载页面可查看各版本的Change History,下载完成后验证md5
    [root@ZST1 ~]# mkdir -p /tools
    [root@ZST1 tools]# cd /tools
    [root@ZST1 tools]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
    [root@ZST1 tools]# md5sum mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
    dbe7e5e820377c29d8681005065e5728  mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
    
    3、创建帐号(运行服务的帐户都不能登录)
    [root@ZST1 tools]# groupadd mysql
    [root@ZST1 tools]# useradd -g mysql -d /usr/local/mysql -s /sbin/nologin -M mysql
    [root@ZST1 tools]# id mysql
    uid=501(mysql) gid=501(mysql) groups=501(mysql)
    [root@ZST1 tools]# 
    
    4、基本软件安装
    [root@ZST1 tools]# mkdir /opt/mysql
    [root@ZST1 tools]# cd /opt/mysql
    [root@ZST1 mysql]# tar zxvf /tools/mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
    [root@ZST1 mysql]# cd /usr/local/
    [root@ZST1 local]# ln -s /opt/mysql/mysql-5.7.19-linux-glibc2.12-x86_64 mysql
    [root@ZST1 local]# chown -R mysql:mysql mysql/
    这里使用ln创建软链接的目的?为何不直接把/opt/mysql/mysql-5.7.19-linux-glibc2.12-x86_64目录下的内容拷贝到/usr/local/mysql下
    
    5、创建数据库相关的目录
    配置文件:/etc/my.cnf
    /data  是一个单独挂载的一个分区
    datadir /data/mysql/mysql3306/data
    binlog  /data/mysql/mysql3306/logs
            /data/mysql/mysql3306/tmp
    [root@ZST1 local]# mkdir /data/mysql/mysql3306/{data,logs,tmp} -p
    
    修改属主,add
    [root@ZST1 local]# chown -R mysql:mysql /data/mysql/
    
    6、初始化
    [root@ZST1 local]# cd /usr/local/mysql
    [root@ZST1 mysql]# ./bin/mysqld --defaults-file=/etc/my.cnf --initialize
    之前版本(5.6,5.5,5.1)使用mysql_basedir/script/mysql_install_db;5.7的./bin/mysql_install_db已被废弃
    --initialize会生成一个随机密码(error.log);--initialize-insecure不会生成密码
    --datadir目录下不能有数据文件
    [root@ZST1 mysql]# find / -name mysql_install_db
    获取密码,add
    [root@ZST1 mysql]# cat /data/mysql/mysql3306/data/error.log |grep password
    
    7、启动
    [root@ZST1 mysql]# cp support-files/mysql.server /etc/init.d/mysql
    [root@ZST1 mysql]# /etc/init.d/mysql start
    [root@ZST1 mysql]# service mysql start
    
    8、连接
    去掉my.cnf中--skip-grant-tables前的注释,重启数据库服务(如果能知道第6步生成的密码就不需这样折腾)
    [root@ZST1 mysql]# ./bin/mysql -uroot
    [root@ZST1 mysql]# ./bin/mysql -S /tmp/mysql3306.sock
    进入数据库,尝试使用alter user修改密码
    root@localhost [(none)]> alter user root@localhost identified by 'mysql5719';
    ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
    
    root@localhost [(none)]> use mysql;
    root@localhost [mysql]> update user set authentication_string=password('mysql5719') where User='root';
    Query OK, 1 row affected, 1 warning (0.03 sec)
    Rows matched: 1  Changed: 1  Warnings: 1
    退出,注释my.cnf中--skip-grant-tables,重启数据库服务,再重新进入
    root@localhost [mysql]> exit
    [root@ZST1 mysql]# ./bin/mysql -uroot -p
    Enter password: 键入新密码
    root@localhost [(none)]> show databases;
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    出现这个错误的原因是user表中的password_expired字段取值为Y,密码过期需修改
    root@localhost [(none)]> alter user 'root'@'localhost' identified by 'mysql5719';
    root@localhost [(none)]> exit
    
    9、配置PATH
    mysql未添加环境变量前
    [root@ZST1 mysql]# mysql -uroot -p
    bash: mysql: command not found
    
    [root@ZST1 mysql]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    [root@ZST1 mysql]# source /etc/profile
    [root@ZST1 mysql]# echo $PATH
    
    [root@ZST1 mysql]# mysql -uroot -p
    Enter password: 键入正确密码
    
    10、关闭mysql
    [root@ZST1 mysql]# /etc/init.d/mysql stop
    View Code

    三、遇到的问题

    2.5中没有修改数据库相关的目录的属主
    [root@ZST1 mysql]# service mysql start
    Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/mysql3306/data/mysql.pid).
    
    查看错误日志
    [root@ZST1 mysql]# tail -n 10 /data/mysql/mysql3306/data/error.log
    2017-08-31T09:30:07.528203Z 0 [Warning] The syntax '--log_warnings/-W' is deprecated and will be removed in a future release. Please use '--log_error_verbosity' instead.
    2017-08-31T09:30:07.528381Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2017-08-31T09:30:07.544406Z 0 [Warning] Insecure configuration for --secure-file-priv: Location is accessible to all OS users. Consider choosing a different directory.
    2017-08-31T09:30:07.544477Z 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.7.19-log) starting as process 28477 ...
    mysqld: File '/data/mysql/mysql3306/logs/mysql-bin.index' not found (Errcode: 13 - Permission denied)
    2017-08-31T09:30:07.548527Z 0 [ERROR] Aborting
    
    2017-08-31T09:30:07.548544Z 0 [Note] Binlog end
    2017-08-31T09:30:07.548838Z 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
    logs目录的权限问题(Permission denied)
    
    [root@ZST1 mysql]# ll /data/mysql/mysql3306
    total 12
    drwxr-xr-x. 2 mysql mysql 4096 Aug 31 17:30 data
    drwxr-xr-x. 2 root  root  4096 Aug 31 17:25 logs
    drwxr-xr-x. 2 root  root  4096 Aug 31 17:25 tmp
    修改目录属主信息
    [root@ZST1 mysql]# cd /data/mysql/mysql3306
    [root@ZST1 mysql3306]# chown -R mysql:mysql logs
    [root@ZST1 mysql3306]# chown -R mysql:mysql tmp
    
    再次启动失败
    [root@ZST1 mysql]# /etc/init.d/mysql start
    Starting MySQL...... ERROR! The server quit without updating PID file (/data/mysql/mysql3306/data/mysql.pid).
    
    查看错误日志
    [root@ZST1 data]# tail -n 100 /data/mysql/mysql3306/data/error.log
    2017-08-31T09:52:57.010606Z 0 [Note] InnoDB: The first innodb_system data file 'ibdata1' did not exist. A new tablespace will be created!
    2017-08-31T09:52:57.011019Z 0 [Note] InnoDB: Setting file './ibdata1' size to 100 MB. Physically writing the file full; Please wait ...
    2017-08-31T09:52:57.011542Z 0 [Note] InnoDB: Progress in MB: 100
    2017-08-31T09:52:57.115478Z 0 [Note] InnoDB: File './ibdata1' size is now 100 MB.
    2017-08-31T09:52:57.116269Z 0 [Note] InnoDB: Setting log file ./ib_logfile101 size to 100 MB
    2017-08-31T09:52:57.116414Z 0 [Note] InnoDB: Progress in MB: 100
    2017-08-31T09:52:57.600744Z 0 [Note] InnoDB: Setting log file ./ib_logfile1 size to 100 MB
    2017-08-31T09:52:57.600967Z 0 [Note] InnoDB: Progress in MB: 100
    2017-08-31T09:52:58.127698Z 0 [Note] InnoDB: Setting log file ./ib_logfile2 size to 100 MB
    2017-08-31T09:52:58.127915Z 0 [Note] InnoDB: Progress in MB: 100
    2017-08-31T09:52:58.666114Z 0 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
    2017-08-31T09:52:58.666227Z 0 [Warning] InnoDB: New log files created, LSN=45790
    2017-08-31T09:52:58.666254Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
    2017-08-31T09:52:58.666444Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
    2017-08-31T09:52:58.681658Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
    2017-08-31T09:52:58.681940Z 0 [Note] InnoDB: Doublewrite buffer not found: creating new
    2017-08-31T09:52:58.851112Z 0 [Note] InnoDB: Doublewrite buffer created
    2017-08-31T09:52:58.902414Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
    2017-08-31T09:52:58.902485Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
    2017-08-31T09:52:58.911638Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
    2017-08-31T09:52:58.956602Z 0 [Note] InnoDB: Foreign key constraint system tables created
    2017-08-31T09:52:58.956727Z 0 [Note] InnoDB: Creating tablespace and datafile system tables.
    2017-08-31T09:52:58.957381Z 0 [Note] InnoDB: Tablespace and datafile system tables created.
    2017-08-31T09:52:58.957432Z 0 [Note] InnoDB: Creating sys_virtual system tables.
    2017-08-31T09:52:58.957842Z 0 [Note] InnoDB: sys_virtual table created
    2017-08-31T09:52:59.023019Z 0 [Note] InnoDB: Waiting for purge to start
    2017-08-31T09:52:59.073741Z 0 [Note] InnoDB: 5.7.19 started; log sequence number 0
    2017-08-31T09:52:59.116756Z 0 [Note] Plugin 'FEDERATED' is disabled.
    mysqld: Table 'mysql.plugin' doesn't exist
    2017-08-31T09:52:59.117295Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
    2017-08-31T09:52:59.173209Z 0 [Note] Salting uuid generator variables, current_pid: 30669, server_start_time: 1504173176, bytes_sent: 0, 
    2017-08-31T09:52:59.183122Z 0 [Note] Generated uuid: '2bc37fda-8e32-11e7-8369-000c29c1025c', server_start_time: 8632556062243312709, bytes_sent: 56834352
    2017-08-31T09:52:59.183198Z 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: 2bc37fda-8e32-11e7-8369-000c29c1025c.
    2017-08-31T09:52:59.185831Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
    2017-08-31T09:52:59.188080Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
    2017-08-31T09:52:59.188112Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
    2017-08-31T09:52:59.198187Z 0 [Note] IPv6 is available.
    2017-08-31T09:52:59.198309Z 0 [Note]   - '::' resolves to '::';
    2017-08-31T09:52:59.198368Z 0 [Note] Server socket created on IP: '::'.
    2017-08-31T09:52:59.232943Z 0 [Warning] Failed to open optimizer cost constant tables
    
    2017-08-31T09:52:59.233342Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
    2017-08-31T09:52:59.233452Z 0 [ERROR] Aborting
    
    2017-08-31T09:52:59.233515Z 0 [Note] Binlog end
    2017-08-31T09:52:59.235765Z 0 [Note] Shutting down plugin 'ngram'
    2017-08-31T09:52:59.235798Z 0 [Note] Shutting down plugin 'BLACKHOLE'
    2017-08-31T09:52:59.235810Z 0 [Note] Shutting down plugin 'ARCHIVE'
    2017-08-31T09:52:59.235818Z 0 [Note] Shutting down plugin 'partition'
    2017-08-31T09:52:59.235826Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
    2017-08-31T09:52:59.235834Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
    2017-08-31T09:52:59.235841Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
    2017-08-31T09:52:59.235848Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
    2017-08-31T09:52:59.235855Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
    2017-08-31T09:52:59.235863Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
    2017-08-31T09:52:59.235870Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
    2017-08-31T09:52:59.235877Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
    2017-08-31T09:52:59.235884Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
    2017-08-31T09:52:59.235891Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
    2017-08-31T09:52:59.235898Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
    2017-08-31T09:52:59.235905Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
    2017-08-31T09:52:59.235913Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
    2017-08-31T09:52:59.235919Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
    2017-08-31T09:52:59.235927Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
    2017-08-31T09:52:59.235934Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
    2017-08-31T09:52:59.235941Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
    2017-08-31T09:52:59.235948Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
    2017-08-31T09:52:59.235955Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
    2017-08-31T09:52:59.235962Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
    2017-08-31T09:52:59.235969Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
    2017-08-31T09:52:59.235985Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
    2017-08-31T09:52:59.235994Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
    2017-08-31T09:52:59.236001Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
    2017-08-31T09:52:59.236008Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
    2017-08-31T09:52:59.236016Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
    2017-08-31T09:52:59.236023Z 0 [Note] Shutting down plugin 'INNODB_CMP'
    2017-08-31T09:52:59.236030Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
    2017-08-31T09:52:59.236038Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
    2017-08-31T09:52:59.236045Z 0 [Note] Shutting down plugin 'INNODB_TRX'
    2017-08-31T09:52:59.236052Z 0 [Note] Shutting down plugin 'InnoDB'
    2017-08-31T09:52:59.236349Z 0 [Note] InnoDB: FTS optimize thread exiting.
    2017-08-31T09:52:59.236499Z 0 [Note] InnoDB: Starting shutdown...
    2017-08-31T09:52:59.337034Z 0 [Note] InnoDB: Dumping buffer pool(s) to /data/mysql/mysql3306/data/ib_buffer_pool
    2017-08-31T09:52:59.337528Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 170831 17:52:59
    2017-08-31T09:53:00.862954Z 0 [Note] InnoDB: Shutdown completed; log sequence number 1209961
    2017-08-31T09:53:00.863526Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
    2017-08-31T09:53:00.863560Z 0 [Note] Shutting down plugin 'MEMORY'
    2017-08-31T09:53:00.863576Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
    2017-08-31T09:53:00.863762Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
    2017-08-31T09:53:00.863777Z 0 [Note] Shutting down plugin 'MyISAM'
    2017-08-31T09:53:00.865027Z 0 [Note] Shutting down plugin 'CSV'
    2017-08-31T09:53:00.865062Z 0 [Note] Shutting down plugin 'sha256_password'
    2017-08-31T09:53:00.865075Z 0 [Note] Shutting down plugin 'mysql_native_password'
    2017-08-31T09:53:00.865415Z 0 [Note] Shutting down plugin 'binlog'
    2017-08-31T09:53:00.868573Z 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
    
    重新初始化
    [root@ZST1 mysql]# pwd
    /usr/local/mysql
    [root@ZST1 mysql]# ./bin/mysqld --defaults-file=/etc/my.cnf --initialize
    2017-08-31T09:54:45.865304Z 0 [Warning] The syntax '--log_warnings/-W' is deprecated and will be removed in a future release. Please use '--log_error_verbosity' instead.
    2017-08-31T09:54:45.865492Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2017-08-31T09:54:45.865561Z 0 [Note] Ignoring --secure-file-priv value as server is running with --initialize(-insecure) or --bootstrap.
    2017-08-31T09:54:45.865593Z 0 [Note] ./bin/mysqld (mysqld 5.7.19-log) starting as process 30720 ...
    2017-08-31T09:54:45.868650Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
    2017-08-31T09:54:45.868696Z 0 [ERROR] Aborting
    
    2017-08-31T09:54:45.868723Z 0 [Note] Binlog end
    2017-08-31T09:54:45.868950Z 0 [Note] ./bin/mysqld: Shutdown complete
    数据目录有文件存在(data directory has files in it),2.6也提到初始化时--datadir目录下不能有数据文件
    
    删除/data/mysql/mysql3306/{data,logs,tmp}目录下的所有文件(夹),再重新初始化
    View Code

    对于Errcode可以使用perror命令查看错误描述

    [root@ZST1 ~]# /usr/local/mysql/bin/perror 13
    OS error code  13:  Permission denied
    View Code

    四、my.cnf

    #my.cnf
    [client]
    port            = 3306
    socket          = /tmp/mysql3306.sock
    
    [mysql]
    prompt="\u@\h,\p [\d]>\_" 
    #pager="less -i -n -S"
    #tee=/opt/mysql/query.log
    no-auto-rehash
    
    [mysqld]
    #misc
    user = mysql
    basedir = /usr/local/mysql
    datadir = /data/mysql/mysql3306/data
    port = 3306
    
    socket = /tmp/mysql3306.sock
    event_scheduler = 0
    
    tmpdir = /data/mysql/mysql3306/tmp
    #timeout
    interactive_timeout = 300
    wait_timeout = 300
    
    #character set
    character-set-server = utf8
    
    open_files_limit = 65535
    max_connections = 100
    max_connect_errors = 100000
    lower_case_table_names =1
    #file
    #@secure-file-priv=/tmp
    #symi replication
    
    #rpl_semi_sync_master_enabled=1
    #rpl_semi_sync_master_timeout=1000 # 1 second
    #rpl_semi_sync_slave_enabled=1
    
    #logs
    log-output=file
    slow_query_log = 1
    slow_query_log_file = slow.log
    log-error = error.log
    log_warnings = 2
    pid-file = mysql.pid
    long_query_time = 1
    #log-slow-admin-statements = 1
    #log-queries-not-using-indexes = 1
    log-slow-slave-statements = 1
    
    #binlog
    #binlog_format = STATEMENT
    binlog_format = row
    server-id = 1003306
    log-bin = /data/mysql/mysql3306/logs/mysql-bin
    max_binlog_size = 256M
    sync_binlog = 0
    expire_logs_days = 10
    #procedure 
    log_bin_trust_function_creators=1
    
    #file
    secure_file_priv="/tmp"
    #
    gtid-mode = on
    enforce-gtid-consistency=1
    
    
    #relay log
    skip_slave_start = 1
    max_relay_log_size = 128M
    relay_log_purge = 1
    relay_log_recovery = 1
    relay-log=relay-bin
    relay-log-index=relay-bin.index
    log_slave_updates
    
    #slave-skip-errors=1032,1053,1062
    #skip-grant-tables
    
    #buffers & cache
    table_open_cache = 2048
    table_definition_cache = 2048
    table_open_cache = 2048
    max_heap_table_size = 96M
    sort_buffer_size = 128K
    join_buffer_size = 128K
    thread_cache_size = 200
    query_cache_size = 0
    query_cache_type = 0
    query_cache_limit = 256K
    query_cache_min_res_unit = 512
    thread_stack = 192K
    tmp_table_size = 96M
    key_buffer_size = 8M
    read_buffer_size = 2M
    read_rnd_buffer_size = 16M
    bulk_insert_buffer_size = 32M
    
    #myisam
    myisam_sort_buffer_size = 128M
    myisam_max_sort_file_size = 10G
    myisam_repair_threads = 1
    
    #innodb
    innodb_buffer_pool_size = 100M
    innodb_buffer_pool_instances = 1
    innodb_data_file_path = ibdata1:100M:autoextend
    innodb_flush_log_at_trx_commit = 2
    innodb_log_buffer_size = 8M
    innodb_log_file_size = 100M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 50
    innodb_file_per_table = 1
    innodb_rollback_on_timeout
    innodb_io_capacity = 2000
    transaction_isolation = READ-COMMITTED
    innodb_flush_method = O_DIRECT
    View Code

    问题:能否使用二进制包在同一机器上搭建多实例?多实例主要是my.cnf怎么区分?


    补一、宿主机用Navicat连接虚拟机上的MySQL实例

    1、宿主机用Navicat连接虚拟机上的MySQL实例
    2003 - Cannot connect to MySQL server on '192.168.85.132'(10060)
    
    2、宿主机ping、telnet虚拟机
    C:UsersAdministrator>ping 192.168.85.132
    
    正在 Ping 192.168.85.132 具有 32 字节的数据:
    来自 192.168.85.132 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.85.132 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.85.132 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.85.132 的回复: 字节=32 时间<1ms TTL=64
    
    192.168.85.132 的 Ping 统计信息:
        数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):
        最短 = 0ms,最长 = 0ms,平均 = 0ms
    
    C:UsersAdministrator>telnet 192.168.85.132 3306
    正在连接192.168.85.132...无法打开到主机的连接。 在端口 3306: 连接失败
    
    3、虚拟机检查防火墙
    [root@ZST1 ~]# service iptables status
    Table: filter
    Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
    2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
    3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
    4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
    5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
    
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    
    暂时关闭防火墙,后期添加入站规则
    [root@ZST1 ~]# service iptables stop
    
    [root@ZST1 ~]# cp /etc/sysconfig/iptables /etc/sysconfig/iptables.`date +%Y%m%d.%H%M%S`
    -I作为第一条规则插入,-A作为最后一条规则插入
    [root@ZST1 ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
    [root@ZST1 ~]# service iptables save
    [root@ZST1 ~]# service iptables restart
    
    4、宿主机Navicat连接虚拟机上的MySQL实例
    1045-Access denied for user 'root'@'192.168.85.1'(using password:Yes)
    用户表中没有授权(只有root@localhost)
    
    5、mysql创建新用户
    [root@ZST1 ~]# mysql -uroot -p
    root@localhost,mysql3306.sock [(none)]> grant all privileges on *.* to mydba@"192.168.85.%" Identified by "mysql5719";
    之后就可以从宿主机用Navicat连接虚拟机上的MySQL实例
    可使用rename user修改User和Host信息
    root@localhost,mysql3306.sock [(none)]> rename user 'mydba'@'192.168.85.%' TO 'mydba'@'localhost';
    root@localhost,mysql3306.sock [(none)]> show grants for 'mydba'@'192.168.85.%';
    
    rename user后不需要flush privileges,会直接更新内存中的权限信息;
    Navicat打开的命令列界面,不会受my.cnf中的prompt影响
    View Code

    使用rename user修改User和Host信息,rename user后不需要flush privileges,会直接更新内存中的权限信息;
    补二、二进制包/源码安装方式的MySQL卸载

    1、检查MySQL服务并关闭服务进程
    [root@ZST1 ~]# ps -ef | grep mysql
    root      2525     1  0 10:23 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/mysql3306/data --pid-file=/data/mysql/mysql3306/data/mysql.pid
    mysql     3487  2525  0 10:23 pts/0    00:00:05 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/mysql3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=error.log --open-files-limit=65535 --pid-file=/data/mysql/mysql3306/data/mysql.pid --socket=/tmp/mysql3306.sock --port=3306
    root      3680  2465  0 10:33 pts/0    00:00:00 mysql -uroot -p
    root      4887  3732  0 12:25 pts/1    00:00:00 grep mysql
    [root@ZST1 ~]# service mysql status
     SUCCESS! MySQL running (3487)
    [root@ZST1 ~]# service mysql stop
    Shutting down MySQL.. SUCCESS! 
    [root@ZST1 ~]# service mysql status
     ERROR! MySQL is not running
    [root@ZST1 ~]# 
    
    2、查找MySQL的安装目录并彻底删除
    [root@ZST1 ~]# whereis mysql
    mysql: /usr/lib64/mysql /usr/local/mysql /usr/share/mysql
    [root@ZST1 ~]# find / -name mysql
    /usr/local/mysql
    /usr/lib64/mysql
    /usr/share/mysql
    /var/spool/mail/mysql
    /opt/mysql
    /opt/mysql/mysql-5.7.19-linux-glibc2.12-x86_64/bin/mysql
    /opt/mysql/mysql-5.7.19-linux-glibc2.12-x86_64/include/mysql
    /etc/rc.d/init.d/mysql
    /data/mysql
    /data/mysql/mysql3306/data/mysql
    [root@ZST1 ~]# 
    
    和原文稍有不同,ZST1之前存在mysql-libs
    [root@ZST1 ~]# rpm -qa|grep -i mysql
    mysql-libs-5.1.73-8.el6_8.x86_64
    [root@ZST1 ~]# yum -y remove mysql-libs-5.1.73-8.el6_8.x86_64
    [root@ZST1 ~]# ll /etc |grep my.cnf
    -rw-r--r--.  1 root root   2469 Sep  1 15:30 my.cnf.rpmsave
    
    [root@ZST1 ~]# whereis mysql
    mysql: /usr/local/mysql
    [root@ZST1 ~]# find / -name mysql
    /usr/local/mysql
    /var/spool/mail/mysql
    /opt/mysql
    /opt/mysql/mysql-5.7.19-linux-glibc2.12-x86_64/bin/mysql
    /opt/mysql/mysql-5.7.19-linux-glibc2.12-x86_64/include/mysql
    /etc/rc.d/init.d/mysql
    /data/mysql
    /data/mysql/mysql3306/data/mysql
    
    [root@ZST1 ~]# rm -rf /var/spool/mail/mysql
    [root@ZST1 ~]# rm -rf /etc/rc.d/init.d/mysql
    [root@ZST1 ~]# rm -rf /data/mysql/mysql3306
    
    3、删除一些配置文件
    配置文件一般有/etc/my.cnf 或/etc/init.d/mysql.server,视具体安装配置情况而定。
    
    4、删除MySQL用户以及用户组
    [root@ZST1 ~]# id mysql
    uid=501(mysql) gid=501(mysql) groups=501(mysql)
    [root@ZST1 ~]# userdel mysql
    
    $PATH里面还有mysql信息,第3、4步暂时不处理
    View Code

    在前面删除的基础上重新使用二进制包安装MySQL

    5、创建数据库相关的目录
    [root@ZST1 ~]# mkdir /data/mysql/mysql3306/{data,logs,tmp} -p
    [root@ZST1 ~]# chown -R mysql:mysql /data/mysql/
    
    6、初始化
    [root@ZST1 ~]# cd /usr/local/mysql
    [root@ZST1 mysql]# mv /etc/my.cnf.rpmsave /etc/my.cnf
    [root@ZST1 mysql]# ./bin/mysqld --defaults-file=/etc/my.cnf --initialize
    找不到那个所谓的~/.mysql_secret文件
    [root@ZST1 mysql]# more ~/.mysql_secret
    /root/.mysql_secret: No such file or directory
    初始密码从error.log中查找
    [root@ZST1 mysql]# cat /data/mysql/mysql3306/data/error.log |grep password
    2017-09-05T08:27:25.396068Z 1 [Note] A temporary password is generated for root@localhost: FpN=_tXkg2zW
    View Code
  • 相关阅读:
    怎样才有资格被称为开源软件
    [翻译]开发Silverlight 2.0的自定义控件
    网上Silverlight项目收集
    Google 分析的基准化测试
    IIS 承载的WCF服务失败
    Lang.NET 2008 相关Session
    Silverlight 2.0 beta1 堆栈
    asp.net 性能调较
    SQL Server 2005 的nvarchar(max),varchar(max)来救火
    LINQPad
  • 原文地址:https://www.cnblogs.com/ShanFish/p/7464505.html
Copyright © 2020-2023  润新知