代码改变世界

Linux系统MySQL-5.7.18 release版安装指南

2019-05-26 10:35  Gizing  阅读(196)  评论(0编辑  收藏  举报

与源码版本安装过程基本一致,除了编译环节,本文只谈release版,即含有bin文件版本

好处:每个用户可安装属于自己的MySQL Server

目标主机系统:CentOS 6.8
用户:saojie(没有管理员权限)
目录:/home/saojie/mysql-5.7.18

下载

Linux Generic
地址:https://dev.mysql.com/downloads/mysql/

解压

tar zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.18-linux-glibc2.5-x86_64 mysql-5.7.18

安装

写配置文件

将my.cnf放在mysql-5.7.18目录下,并创建log目录mkdir -p /home/saojie/mysql-5.7.18/log

[mysqld]
basedir = /home/saojie/mysql-5.7.18
datadir = /home/saojie/mysql-5.7.18/data
log_bin = /home/saojie/mysql-5.7.18/data
log_bin_index = /home/saojie/mysql-5.7.18/data/mysql-bin.index 
server-id = 666

log_error = /home/saojie/mysql-5.7.18/log/mysql-error.log
slow_query_log_file = /home/saojie/mysql-5.7.18/log/mysql-slow.log
slow_query_log = ON
port = 33306    #端口避免冲突
socket = /home/saojie/mysql-5.7.18/mysql.sock
general_log = off
general_log_file = /home/saojie/mysql-5.7.18/log/general.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysql]
socket = /home/saojie/mysql-5.7.18/mysql.sock # 当客户端指定配置文件时使用

初始化

bin/mysqld --defaults-file=/home/saojie/mysql-5.7.18/my.cnf --initialize --user=saojie --basedir=/home/saojie/mysql-5.7.18/ --datadir=/home/saojie/mysql-5.7.18/data

初始化会生成一个root的随机密码

启动

第一次启动加socket避免连接到别人的MySQL Server,且因为root默认是没有远程访问权限,刚开始root无法通过指定IP和端口连接

bin/mysqld --defaults-file=/home/saojie/mysql-5.7.18/my.cnf &

mysql -uroot -p --socket=/home/saojie/mysql-5.7.18/mysql.sock #不加socket可能会连接到别的MySQL Server

关闭

bin/mysqladmin -uroot -proot --socket=/home/saojie/mysql-5.7.18/mysql.sock shutdown
或
bin/mysqladmin -hxxx -Pxxx -uroot -proot shutdown

其他问题

  • JDBC连接缓慢

    在配置文件[mysqld]下加上skip-name-resolve再重启,跳过DNS查询

  • 不把MySQL日志输出到saojie用户控制台

    在[mysqld]下指定log_error地址

便捷脚本

#!/bin/bash
function client(){
    bin/mysql --defaults-extra-file=/home/saojie/mysql-5.7.18/my.cnf
}

function server(){
    bin/mysqld --defaults-extra-file=/home/saojie/mysql-5.7.18/my.cnf  &
}

function stop(){
    bin/mysqladmin -uroot -p --socket=/home/saojie/mysql-5.7.18/mysql.sock shutdown
}

function pid(){

  ret=$(ps -ef |grep mysqld | awk '{print $2}')
    echo $ret
}

if [ $# = 1 ]; then $1; else server; fi