3分钟安装MySQL:安装

​3分钟安装MySQL:环境准备​

1.检查并安装依赖包

rpm -qa | grep libaio
yum install -y libaio
yum -y install gcc gcc-c++ bison ncurses ncurses-devel zlib libxml2 openssl dtrace libstdc++-devel

2.删除已安装的mysql

rpm -qa | grep -i mysql |xarge rpm -e

3.添加mysql用户

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

4.创建相关目录

mkdir -p /mysql/{app,data,log,soft,backup}/3306
mkdir -p /mysql/data/3306/data
mkdir -p /mysql/log/3306/{binlog,relaylog}
chown -R mysql:mysql /mysql

5.安装数据库

5.1.二进制安装

cd /mysql/app
tar xvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
[root@ms05 app]# ln -s mysql-5.7.20-linux-glibc2.12-x86_64 mysql

5.2.源代码安装

cd cmake-3.5.2
./bootstrap
gmake
gmake install

cd /mysql/app/mysql-5.7.20
cmake . -DCMAKE_INSTALL_PREFIX=/mysql/app/mysql -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/mysql/data/3306/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DSYSCONFDIR=/mysql/data/3306 -DMYSQL_UNIX_ADDR=/mysql/data/3306/mysql.sock -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/mysql/app/mysql-5.7.20/boost/boost_1_59_0

make && make install

6.创建配置文件

/mysql/data/my.cnf

[client]
port=3306
socket = /mysql/data/3306/mysql.sock

[mysql]
no-beep
prompt="\u@ms05 \R:\m:\s [\d]> "
auto-rehash
default-character-set=utf8

[mysqld]
server-id=3306
port=3306
user = mysql
bind_address= 192.168.1.75
basedir=/mysql/app/mysql
datadir=/mysql/data/3306/data
socket = /mysql/data/3306/mysql.sock
pid-file=/mysql/data/3306/mysql.pid
character-set-server=utf8
skip-character-set-client-handshake=1
autocommit = 0
max_connections = 800
max_connect_errors = 1000
default-storage-engine=INNODB
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
sort_buffer_size = 32M
join_buffer_size = 128M
tmp_table_size = 72M
max_allowed_packet = 16M
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
interactive_timeout = 1800
wait_timeout = 1800
read_buffer_size = 16M
read_rnd_buffer_size = 32M

query_cache_type = 1
query_cache_size=1M
table_open_cache=2000
thread_cache_size=768
myisam_max_sort_file_size=10G
myisam_sort_buffer_size=135M
key_buffer_size=32M
read_buffer_size=8M
read_rnd_buffer_size=4M

back_log=1024
open_files_limit=65536
table_definition_cache=1400

log-output=FILE
general_log = 0
general_log_file=/mysql/log/3306/testdb-general.err
slow_query_log = ON
slow_query_log_file=/mysql/log/3306/testdb-query.err
long_query_time=10
log-error=/mysql/log/3306/testdb-error.err

log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
min_examined_row_limit = 100

7.初始化数据库

mysqld --defaults-file=/mysql/data/my.cnf --initialize --user=mysql --basedir=/mydql/app/mysql --datadir=/mysql/data/3306/data

登录修改密码

###初始密码在/mysql/log/3306/testdb-error.err中
mysql -uroot -p
alter user root@'localhost' identified by '123456';
update mysql.user set host='%' where user='root';
flush privileges;

8.配置启动脚本

[root@ms05 support-files]# pwd
/mysql/app/mysql/support-files

[root@ms05 support-files]# cp mysql.server mysql

修改以下参数

basedir=/mysql/app/mysql
datadir=/mysql/data/3306/data
mysqld_pid_file_path=/mysql/data/3306/mysql.pid
basedir=/mysql/app/mysql
bindir=/mysql/app/mysql/bin
datadir=/mysql/data/3306/data
sbindir=/mysql/app/mysql/bin
libexecdir=/mysql/app/mysql/bin
$bindir/mysqld_safe --defaults-file=/mysql/data/3306/data/my.cnf --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

将启动文件复制到服务目录下

[root@ms05 support-files]# cp mysql /etc/init.d/

9.启停测试

[root@ms05 support-files]# service mysql start
Starting MySQL.. SUCCESS!
[root@ms05 support-files]# service mysql stop
Shutting down MySQL.. SUCCESS!
[root@ms05 support-files]# service mysql start
Starting MySQL.. SUCCESS!

[root@ms05 support-files]# chkconfig --add mysql

[root@ms05 support-files]# chkconfig mysql off

[root@ms05 support-files]# chkconfig mysql --level 3 on

[root@ms05 support-files]# chkconfig --list | grep mysql
mysql 0:off 1:off 2:off 3:on 4:off 5:off 6:off