在linux下搭建MySQL5.6和MySQL5.7

MySQL5.6与MySQL5.7的搭建有一些不一样。请读者仔细阅读笔者搭建的过程,如发现错误,请反馈给我,让我们共同学习和进步,共同在DT这一条道路上越走越远。向每一位读者执意诚挚的敬意。

(*).OS环境:Red Hat  Enterprise Linux 7.4 

(*).数据库版本:MySQL 5.6.37 和MySQL5.7.19

一、MySQL5.6的单实例搭建

新建software目录

mkdir /software

用Xftp5 上传MySQL5.6 到/software下

1.创建家目录(basedir):

mkdir -p /usr/local/

把软件上传到/usr/local/目录下进行解压

[root@localhost software]# tar -zxvf mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

为了方便,同时不让人看清所用的产品版本,保证商业的机密性。然后把 mysql-5.6.37-linux-glibc2.12-x86_64 更名为mysql

[root@localhost local]# mv mysql-5.6.37-linux-glibc2.12-x86_64/ mysql

添加mysql用户

[root@localhost local]# useradd mysql

最后授权mysql

[root@localhost local]# chown mysql:mysql -R /usr/local/mysql  

查看授权情况

2.创建数据目录(datadir):

       mkdir -p /data/mysql3306

对数据目录授权

[root@localhost data]# chown mysql:mysql -R data/mysql3306   授权  mysql

查看授权情况

3.修改配置文件:vi /etc/my3306.cnf

##################### mysql5.6 配置文件#############################################

[client]

port = 3306

socket = /tmp/mysql.sock

#default-character-set=utf8

 [mysql]

#default-character-set=utf8

 

[mysqld]

port = 3306

socket = /tmp/mysql.sock

basedir = /usr/local/mysql

datadir = /data/mysql

open_files_limit    = 3072

back_log = 103

max_connections = 512

max_connect_errors = 100000

table_open_cache = 512

external-locking = FALSE

max_allowed_packet = 128M

sort_buffer_size = 2M   

join_buffer_size = 2M  

thread_cache_size = 51

query_cache_size = 32M  

tmp_table_size = 96M    

max_heap_table_size = 96M

slow_query_log = 1

slow_query_log_file = /data/mysql3306/slow.log

log-error = /data/mysql3306/error.log

long_query_time = 0.05

server-id = 1233306

log-bin = /data/mysql3306/mysql-bin

sync_binlog = 1

binlog_cache_size = 4M

max_binlog_cache_size = 128M

max_binlog_size = 1024M

expire_logs_days = 7

key_buffer_size = 32M

read_buffer_size = 1M

read_rnd_buffer_size = 16M

bulk_insert_buffer_size = 64M

character-set-server=utf8

default-storage-engine=InnoDB

binlog_format=row

 

#gtid_mode=on

#log_slave_updates=1

#enforce_gtid_consistency=1

 

interactive_timeout=100

wait_timeout=100

 

 

transaction_isolation = REPEATABLE-READ

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 1434M

innodb_data_file_path = ibdata1:1024M:autoextend

innodb_flush_log_at_trx_commit = 1

innodb_log_buffer_size = 16M

innodb_log_file_size = 256M

innodb_log_files_in_group = 2

innodb_max_dirty_pages_pct = 50

innodb_file_per_table = 1

innodb_locks_unsafe_for_binlog = 0

[mysqldump]

quick

max_allowed_packet = 32M

4.初始化数据

cd /usr/local/mysql/scripts

执行./mysql_install_db 这个脚本

./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql 3306--defaults-file=/etc/my3306.cnf  --user=mysql

注意:出现两个OK代表MySQL5.6初始化成功

 

查看初始化mysql生成的文件

cd /data/mysql3306/  

5.启动mysql服务

/usr/local/mysql/bin/mysqld_safe  --defaults-file=/etc/my3306.cnf  --user=mysql &

查看mysql是否启动成功

 [root@localhost bin]# ps -ef|grep mysql

6.同时:可以设置开机自启动MySQL服务

由于CentOS 6 和CentOS 7 设置开机自启动有一点儿不一样,故首先查看操作系统版本

cat /proc/version

6.1 CentOS 7或者Red Hat 7可以设置mysql开机自启动

vim /usr/lib/systemd/system/mysql.service

添加如下内容

[Unit]

Description=MySQL Server

Documentation=man:mysqld(8)

Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html

After=network.target

After=syslog.target

 

[Install]

WantedBy=multi-user.target

 

[Service]

User=mysql

Group=mysql

ExecStart=/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3306.cnf --user=mysql

LimitNOFILE = 5000

启动MySQL 服务

systemctl start mysql.service

设置开机自启动

systemctl enable mysql.service

6.2 CentOS 6 和 Red Hat 7可以设置mysql开机自启动

vim /etc/rc.local

在最后一行加上

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my3306.cnf --user=mysql &

7.修改环境变量

在文件 vim /etc/profile 添加 export PATH=$PATH:/usr/local/mysql/bin

并且要让环境变量生效  

[root@localhost ~]# source /etc/profile

8.添加MySQL数据密码

直接输入mysql 进入库中(全量路径)

在MySQL5.6中查看mysql 的信息

mysql> show databases;

mysql> use mysql;

mysql> select host,user,Password from user;

这里面有六条信息,我们只需要保留root和localhost即保留第一行

mysql> delete from user where host!='localhost' or user!='root';

mysql> select host ,password,user from user;

我们查询发现,Szzx.888变成了暗文加密的形式

注意:修改完密码后一定要刷新权限 

只有这样以后进入库中才会需要密码,并且密码生效

mysql> flush privileges;

退出mysql数据库,再次输入mysql 发现不能进去了,则代表密码添加成功

输入密码Szzx.888就进入了mysql

[root@localhost ~]# mysql -uroot -p

Enter password:           

注意:以上的只能用于本地root登录数据库,不能远程登录数据库

9.添加MySQL root用户远程连接

mysql> use mysql;

mysql> update user set host=’%’ where user=’root’;

注意:一定要刷新权限

mysql> flush privileges;

再次查看MySQL的用户连接情况

这种结果表明可以用root 用户进行远程连接操作

 

 

二、MySQL 5.7单实例搭建

1.创建家目录(basedir):

mkdir -p /usr/local/

把软件上传到/usr/local/目录下进行解压

[root@localhost software]# tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

然后把 mysql-5.7.19-linux-glibc2.12-x86_64 更名为mysql

[root@localhost local]# mv mysql-5.7.19-linux-glibc2.12-x86_64/ mysql

添加mysql用户并对mysql用户授权

[root@localhost local]# useradd mysql

[root@localhost local]# chown mysql:mysql -R mysql   

2.创建数据目录(datadir):

mkdir -p /data/mysql

cd /data/mysql

[root@localhost mysql]# cd ..

授权  mysql(一定要级联授权)

[root@localhost data]# chown mysql:mysql -R mysql    

 

3、配置文件:  vi /etc/my.cnf

[client]

port = 3306

socket = /data/mysql/mysql.sock

 

[mysql]

prompt="\u@db \R:\m:\s [\d]> "

no-auto-rehash

 

[mysqld]

user = mysql

port = 3306

basedir = /usr/local/mysql

datadir = /data/mysql/

socket = /data/mysql/mysql.sock

pid-file = db.pid

character-set-server = utf8mb4

skip_name_resolve = 1

open_files_limit    = 65535

back_log = 1024

max_connections = 512

max_connect_errors = 1000000

table_open_cache = 1024

table_definition_cache = 1024

table_open_cache_instances = 64

thread_stack = 512K

external-locking = FALSE

max_allowed_packet = 32M

sort_buffer_size = 4M

join_buffer_size = 4M

thread_cache_size = 768

query_cache_size = 0

query_cache_type = 0

interactive_timeout = 600

wait_timeout = 600

tmp_table_size = 32M

max_heap_table_size = 32M

slow_query_log = 1

slow_query_log_file = /data/mysql/slow.log

log-error = /data/mysql/error.log

long_query_time = 0.1

server-id = 3306101

log-bin = /data/mysql/mybinlog

sync_binlog = 1

binlog_cache_size = 4M

max_binlog_cache_size = 1G

max_binlog_size = 1G

expire_logs_days = 7

gtid_mode = on

enforce_gtid_consistency = 1

log_slave_updates

binlog_format = row

relay_log_recovery = 1

relay-log-purge = 1

key_buffer_size = 32M

read_buffer_size = 8M

read_rnd_buffer_size = 4M

bulk_insert_buffer_size = 64M

 

lock_wait_timeout = 3600

explicit_defaults_for_timestamp = 1

innodb_thread_concurrency = 0

innodb_sync_spin_loops = 100

innodb_spin_wait_delay = 30

 

transaction_isolation = REPEATABLE-READ

#innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 1024M

innodb_buffer_pool_instances = 8

innodb_buffer_pool_load_at_startup = 1

innodb_buffer_pool_dump_at_shutdown = 1

innodb_data_file_path = ibdata1:1G:autoextend

innodb_flush_log_at_trx_commit = 1

innodb_log_buffer_size = 32M

innodb_log_file_size = 2G

innodb_log_files_in_group = 2

innodb_max_undo_log_size = 4G

 

innodb_io_capacity = 4000

innodb_io_capacity_max = 8000

innodb_flush_neighbors = 0

innodb_write_io_threads = 8

innodb_read_io_threads = 8

innodb_purge_threads = 4

innodb_page_cleaners = 4

innodb_open_files = 65535

innodb_max_dirty_pages_pct = 50

innodb_flush_method = O_DIRECT

innodb_lru_scan_depth = 4000

innodb_checksum_algorithm = crc32

innodb_lock_wait_timeout = 10

innodb_rollback_on_timeout = 1

innodb_print_all_deadlocks = 1

innodb_file_per_table = 1

innodb_online_alter_log_max_size = 4G

internal_tmp_disk_storage_engine = InnoDB

innodb_stats_on_metadata = 0

 

innodb_status_file = 1

 

innodb_status_output = 0

innodb_status_output_locks = 0

 

performance_schema = 1

performance_schema_instrument = '%=on'

 

innodb_monitor_enable="module_innodb"

innodb_monitor_enable="module_server"

innodb_monitor_enable="module_dml"

innodb_monitor_enable="module_ddl"

innodb_monitor_enable="module_trx"

innodb_monitor_enable="module_os"

innodb_monitor_enable="module_purge"

innodb_monitor_enable="module_log"

innodb_monitor_enable="module_lock"

innodb_monitor_enable="module_buffer"

innodb_monitor_enable="module_index"

innodb_monitor_enable="module_ibuf_system"

innodb_monitor_enable="module_buffer_page"

innodb_monitor_enable="module_adaptive_hash"

 

[mysqldump]

quick

max_allowed_packet = 32M

 

4、添加环境变量

vi  ~/.bash_profile

在里面添加如下内容

MYSQL_HOME=/usr/local/mysql
export MYSQL_HOME
PATH=$MYSQL_HOME/bin:$PATH
export PATH

同时,生效环境变量
source  ~/.bash_profile

5.初始化数据库:

cd  /usr/local/mysql/bin/

./mysqld  --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/ --initialize-insecure

启动MySQL

 ./mysqld_safe --defaults-file=/etc/my.cnf &

[root@localhost bin]# ./mysql

在MySQL5.7中修改密码为123123

use mysql;

 [mysql]> SET PASSWORD=PASSWORD('123123');

[mysql]> flush privileges;

[root@localhost ~]# mysql -uroot -p

Enter password:                      输入密码123123就进入了mysql

 

 

查看MySQL的用户,密码

select host,user,authentication_string from mysql.user;

注意:此root 用户只能是本地连接

6.添加MySQL  root用户远程登录

mysql> use mysql;

mysql> update user set host=’%’ where user=’root’;

注意:一定要刷新权限

查看结果

select host,user,authentication_string from mysql.user;

mysql> flush privileges;


这种结果表示修改成功,可以远程操作数据库。

 

三、MySQL 5.6 和 MySQL 5.7安装的比较

MySQL 5.6:初始化数据时需要进到家目录的 script 目录下

执行:/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ 

--datadir=/data/mysql --defaults-file=/etc/my.cnf --user=mysql

注意:此数据库的密码为空。

MySQL 5.7:初始化数据时需要进到家目录的 bin 目录下

执行:/usr/local/mysql/bin/mysqld  --user=mysql --datadir=/data/mysql 

--basedir=/usr/local/mysql/ --initialize

显然已经废弃了使用 mysql_install_db 这个命令进行初始化数据的操作了。

注意:--initialize 会自动生成随机密码在 error log 里面。如果加  --initialize-insecure 表示 密码为空

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/liuzhuang2017/article/details/81169993