共计 18717 个字符,预计需要花费 47 分钟才能阅读完成。
操作系统:CentOS 6.7
MySQL 版本:5.6.30
- 1. 前期准备
- 2. 系统配置
- 3.CMake 编译配置
- 4.make && make install
- 5. 后期配置和测试
- Reference
1. 前期准备
首先需要 CMake,可以 yum 直接安装:
yum install cmake
也可以官网 https://cmake.org/ 下载源码编译。
我这里选择了官网下载最新版本 cmake-3.5.2.tar.gz。
# tar -zxvf cmake-3.5.2.tar.gz && cd cmake-3.5.2 | |
# ./configure | |
部分输出略。-- Build files have been written to: /soft/cmake-3.5.2 | |
--------------------------------------------- | |
CMake has bootstrapped. Now run gmake. | |
# gmake | |
# make install |
2. 系统配置
添加组和用户:
groupadd mysql | |
useradd -g mysql mysql |
vi /etc/security/limits.conf 文件末尾添加:
mysql soft nproc 2047 | |
mysql hard nproc 16384 | |
mysql soft nofile 1024 | |
mysql hard nofile 65536 |
3.CMake 编译配置
解压源码包:
tar zxvf mysql-5.6.30.tar.gz && cd mysql-5.6.30
CMake 编译配置
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ | |
-DDEFAULT_CHARSET=utf8 \ | |
-DDEFAULT_COLLATION=utf8_general_ci \ | |
-DENABLED_LOCAL_INFILE=ON \ | |
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ | |
-DWITH_FEDERATED_STORAGE_ENGINE=1 \ | |
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ | |
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ | |
-DWITH_PARTITION_STORAGE_ENGINE=1 \ | |
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ | |
-DCOMPILATION_COMMENT='JSS for mysqltest' \ | |
-DWITH_READLINE=ON \ | |
-DSYSCONFDIR=/data/mysqldata/3306 \ | |
-DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock |
遇到以下错误,
-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) | |
CMake Error at cmake/readline.cmake:85 (MESSAGE): | |
Curses library not found. Please install appropriate package, | |
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on RedHat and derivates it is ncurses-devel. | |
Call Stack (most recent call first): | |
cmake/readline.cmake:128 (FIND_CURSES) | |
cmake/readline.cmake:202 (MYSQL_USE_BUNDLED_EDITLINE) | |
CMakeLists.txt:421 (MYSQL_CHECK_EDITLINE) | |
-- Configuring incomplete, errors occurred! | |
See also "/soft/mysql-5.6.30/CMakeFiles/CMakeOutput.log". | |
See also "/soft/mysql-5.6.30/CMakeFiles/CMakeError.log". | |
[root@JY-DB mysql-5.6.30]# |
yum 安装提示缺失的包:
yum install ncurses-devel
重新删除配置文件:
rm -rf CMakeCache.txt
然后重新 CMake 工具编译:
CMake Warning: | |
Manually-specified variables were not used by the project: | |
WITH_READLINE | |
-- Build files have been written to: /soft/mysql-5.6.30 | |
[root@JY-DB mysql-5.6.30]# |
4.make && make install
[ | ]|
大量输出略。 |
这个时间会比较长,也跟机器性能有关。
5. 后期配置和测试
5.1 打包 MySQL 二进制版本:
[root@JY-DB data]# tar zcvf mysql-5.6.30.tar.gz /usr/local/mysql/
5.2 修改 MySQL 软件所在目录拥有者:
chown -R mysql.mysql /usr/local/mysql
5.3 修改 mysql 用户环境变量:
vi ~/.bash_profile
export LANG=zh_CN.GB18030 | |
export PATH=/usr/local/mysql/bin:$PATH |
5.4 创建数据库服务:
mkdir -p /data/mysqldata/{3306/{data,tmp,binlog},backup,scripts} | |
chown -R mysql.mysql /data/mysqldata | |
su - mysql | |
more /usr/local/mysql/support-files/my-default.cnf | |
vi /data/mysqldata/3306/my.cnf |
my.cnf 配置文件内容如下:
[client] | |
port = 3306 | |
socket = /data/mysqldata/3306/mysql.sock | |
#The MySQL Server | |
[mysqld] | |
port = 3306 | |
user = mysql | |
socket = /data/mysqldata/3306/mysql.sock | |
pid-file = /data/mysqldata/3306/mysql.pid | |
basedir = /usr/local/mysql | |
datadir = /data/mysqldata/3306/data | |
tmpdir = /data/mysqldata/3306/tmp | |
open_files_limit = 10240 | |
explicit_defaults_for_timestamp | |
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES | |
#Buffer | |
max_allowed_packet = 256M | |
max_heap_table_size = 256M | |
net_buffer_length = 8k | |
sort_buffer_size = 2M | |
join_buffer_size = 4M | |
read_buffer_size = 2M | |
read_rnd_buffer_size = 16M | |
#Log | |
log-bin = /data/mysqldata/3306/binlog/mysql-bin | |
binlog_cache_size = 32M | |
max_binlog_cache_size = 512M | |
max_binlog_size = 512M | |
binlog_format = mixed | |
log_output = FILE | |
log-error = ../mysql-error.log | |
slow_query_log = 1 | |
slow_query_log_file = ../slow_query.log | |
general_log = 0 | |
general_log_file = ../general_query.log | |
expire-logs-days = 14 | |
#InnoDB | |
innodb_data_file_path = ibdata1:2048M:autoextend | |
innodb_log_file_size = 256M | |
innodb_log_files_in_group = 3 | |
innodb_buffer_pool_size = 1024M | |
[mysql] | |
no-auto-rehash | |
prompt = (\u@\h)[\d]>\_ | |
default-character-set = gbk |
初始化 MySQL 数据库:
$ /usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysqldata/3306/data --basedir=/usr/local/mysql
5.5 启动数据库服务:
mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf &
测试连接并查看 MySQL 进程和端口监听状态:
netstat -lnt | grep 3306 | |
ps -ef | grep bin/mysql | grep -v grep |
实际操作过程如下:
[root@JY-DB ~]# su - mysql | |
[mysql@JY-DB ~]$ mysql | |
Welcome to the MySQL monitor. Commands end with ; or \g. | |
Your MySQL connection id is 1 | |
Server version: 5.6.30-log JSS for mysqltest | |
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. | |
Oracle is a registered trademark of Oracle Corporation and/or its | |
affiliates. Other names may be trademarks of their respective | |
owners. | |
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. | |
(root@localhost)[(none)]> exit | |
Bye | |
[mysql@JY-DB ~]$ netstat -lnt |grep 3306 | |
tcp 0 0 :::3306 :::* LISTEN | |
[mysql@JY-DB ~]$ | |
[mysql@JY-DB ~]$ ps -ef | grep bin/mysql | grep -v grep | |
mysql 6736 1753 0 11:24 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf | |
mysql 7202 6736 0 11:24 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysqldata/3306/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysqldata/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/data/mysqldata/3306/data/../mysql-error.log --open-files-limit=10240 --pid-file=/data/mysqldata/3306/mysql.pid --socket=/data/mysqldata/3306/mysql.sock --port=3306 |
Reference
- 李丙洋. 涂抹 MySQL. 水利水电出版社, 2014. PDF 下载见 http://www.linuxidc.com/Linux/2016-06/132479.htm
- dev.mysql.com
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-06/132477p2.htm
在上篇文章 MySQL 入门 01-MySQL 源码安装 中,我们介绍了 MySQL 源码安装的方法。
源码安装虽然有着更加灵活和更加优化等诸多优势。但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很长。
对于一整套系统和硬件完全一样的机器,其实完全可以只在一台机器源码安装,然后打包好编译出来的二进制版本,拷贝到其他机器解压,直接进行一些配置即可。
本篇文章就来介绍一下二进制版本安装配置 MySQL 的整个过程。
- 1. 上传二进制版本
- 2. 规划数据存放目录
- 3. 解压二进制版本的 MySQL
- 4. 添加组和用户
- 5. 配置 limits.conf
- 6. 修改目录所有者
- 7. 配置环境变量
- 8. 创建数据库服务
1. 上传二进制版本
首先要将上篇文章中 5.1 小节中,打包好的 MySQL 二进制版本 mysql-5.6.30.tar.gz
上传到 /usr2 目录下。
注:二进制版本的压缩包就有 200M+ 以上的大小。
2. 规划数据存放目录
这里系统是使用 lvm 管理的,vg 名称 vg00,添加一个名称为 lvdata 的 lv,大小设定 100G,然后在系统创建 /data 目录,将新建的 lvdata 挂载到 /data 目录下。具体操作如下:
-- 创建 lvdata | |
lvcreate -L 100g -n lvdata vg00 | |
-- 格式化为 ext4 文件系统 | |
mkfs.ext4 /dev/mapper/vg00-lvdata | |
-- 添加为开机自动挂载的目录 | |
vi /etc/fstab 加入一行:/dev/mapper/vg00-lvdata /data ext4 defaults 1 2 | |
-- 创建 /data 目录并挂载 | |
mkdir -p /data && mount -a |
3. 解压二进制版本的 MySQL
切换到根目录下,解压二进制版本的 MySQL:
cd / && tar zxvf /usr2/mysql-5.6.30.tar.gz
4. 添加组和用户
添加组 mysql 和用户 mysql:
groupadd mysql | |
useradd -g mysql mysql |
5. 配置 limits.conf
vi /etc/security/limits.conf,在文件末尾添加:
mysql soft nproc 2047 | |
mysql hard nproc 16384 | |
mysql soft nofile 1024 | |
mysql hard nofile 65536 |
6. 修改目录所有者
修改 MySQL 软件所在目录拥有者:
chown -R mysql.mysql /usr/local/mysql
7. 配置环境变量
配置 mysql 用户的环境变量:
需要 su - mysql
切换到 mysql 用户下,
vi ~/.bash_profile
export LANG=zh_CN.GB18030 | |
export PATH=/usr/local/mysql/bin:$PATH |
8. 创建数据库服务
8.1 创建前准备:
# mkdir -p /data/mysqldata/{3306/{data,tmp,binlog},backup,scripts} | |
# chown -R mysql.mysql /data/mysqldata | |
# su - mysql | |
$ vi /data/mysqldata/3306/my.cnf |
8.2 MySQL 的 my.cnf 配置文件内容如下:
[client] | |
port = 3306 | |
socket = /data/mysqldata/3306/mysql.sock | |
#The MySQL Server | |
[mysqld] | |
port = 3306 | |
user = mysql | |
socket = /data/mysqldata/3306/mysql.sock | |
pid-file = /data/mysqldata/3306/mysql.pid | |
basedir = /usr/local/mysql | |
datadir = /data/mysqldata/3306/data | |
tmpdir = /data/mysqldata/3306/tmp | |
open_files_limit = 10240 | |
explicit_defaults_for_timestamp | |
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES | |
#Buffer | |
max_allowed_packet = 256M | |
max_heap_table_size = 256M | |
net_buffer_length = 8k | |
sort_buffer_size = 2M | |
join_buffer_size = 4M | |
read_buffer_size = 2M | |
read_rnd_buffer_size = 16M | |
#Log | |
log-bin = /data/mysqldata/3306/binlog/mysql-bin | |
binlog_cache_size = 32M | |
max_binlog_cache_size = 512M | |
max_binlog_size = 512M | |
binlog_format = mixed | |
log_output = FILE | |
log-error = ../mysql-error.log | |
slow_query_log = 1 | |
slow_query_log_file = ../slow_query.log | |
general_log = 0 | |
general_log_file = ../general_query.log | |
expire-logs-days = 14 | |
#InnoDB | |
innodb_data_file_path = ibdata1:2048M:autoextend | |
innodb_log_file_size = 256M | |
innodb_log_files_in_group = 3 | |
innodb_buffer_pool_size = 1024M | |
[mysql] | |
no-auto-rehash | |
prompt = (\u@\h)[\d]>\_ | |
default-character-set = gbk |
8.3 初始化 MySQL 数据库:
$ /usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysqldata/3306/data --basedir=/usr/local/mysql
8.4 启动数据库服务:
mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf &
总结:其实在配置完二进制版本的 MySQL 后发现,整个过程跟源码安装并没有什么区别,只是省去了最麻烦和最耗时的 MySQL 源码的编译和安装过程。非常适合相同硬件和系统,对 MySQL 服务的快速部署。
操作系统:CentOS 6.7
MySQL 版本:5.6.30
- 1. 前期准备
- 2. 系统配置
- 3.CMake 编译配置
- 4.make && make install
- 5. 后期配置和测试
- Reference
1. 前期准备
首先需要 CMake,可以 yum 直接安装:
yum install cmake
也可以官网 https://cmake.org/ 下载源码编译。
我这里选择了官网下载最新版本 cmake-3.5.2.tar.gz。
# tar -zxvf cmake-3.5.2.tar.gz && cd cmake-3.5.2 | |
# ./configure | |
部分输出略。-- Build files have been written to: /soft/cmake-3.5.2 | |
--------------------------------------------- | |
CMake has bootstrapped. Now run gmake. | |
# gmake | |
# make install |
2. 系统配置
添加组和用户:
groupadd mysql | |
useradd -g mysql mysql |
vi /etc/security/limits.conf 文件末尾添加:
mysql soft nproc 2047 | |
mysql hard nproc 16384 | |
mysql soft nofile 1024 | |
mysql hard nofile 65536 |
3.CMake 编译配置
解压源码包:
tar zxvf mysql-5.6.30.tar.gz && cd mysql-5.6.30
CMake 编译配置
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ | |
-DDEFAULT_CHARSET=utf8 \ | |
-DDEFAULT_COLLATION=utf8_general_ci \ | |
-DENABLED_LOCAL_INFILE=ON \ | |
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ | |
-DWITH_FEDERATED_STORAGE_ENGINE=1 \ | |
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ | |
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ | |
-DWITH_PARTITION_STORAGE_ENGINE=1 \ | |
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ | |
-DCOMPILATION_COMMENT='JSS for mysqltest' \ | |
-DWITH_READLINE=ON \ | |
-DSYSCONFDIR=/data/mysqldata/3306 \ | |
-DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock |
遇到以下错误,
-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) | |
CMake Error at cmake/readline.cmake:85 (MESSAGE): | |
Curses library not found. Please install appropriate package, | |
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on RedHat and derivates it is ncurses-devel. | |
Call Stack (most recent call first): | |
cmake/readline.cmake:128 (FIND_CURSES) | |
cmake/readline.cmake:202 (MYSQL_USE_BUNDLED_EDITLINE) | |
CMakeLists.txt:421 (MYSQL_CHECK_EDITLINE) | |
-- Configuring incomplete, errors occurred! | |
See also "/soft/mysql-5.6.30/CMakeFiles/CMakeOutput.log". | |
See also "/soft/mysql-5.6.30/CMakeFiles/CMakeError.log". | |
[root@JY-DB mysql-5.6.30]# |
yum 安装提示缺失的包:
yum install ncurses-devel
重新删除配置文件:
rm -rf CMakeCache.txt
然后重新 CMake 工具编译:
CMake Warning: | |
Manually-specified variables were not used by the project: | |
WITH_READLINE | |
-- Build files have been written to: /soft/mysql-5.6.30 | |
[root@JY-DB mysql-5.6.30]# |
4.make && make install
[ | ]|
大量输出略。 |
这个时间会比较长,也跟机器性能有关。
5. 后期配置和测试
5.1 打包 MySQL 二进制版本:
[root@JY-DB data]# tar zcvf mysql-5.6.30.tar.gz /usr/local/mysql/
5.2 修改 MySQL 软件所在目录拥有者:
chown -R mysql.mysql /usr/local/mysql
5.3 修改 mysql 用户环境变量:
vi ~/.bash_profile
export LANG=zh_CN.GB18030 | |
export PATH=/usr/local/mysql/bin:$PATH |
5.4 创建数据库服务:
mkdir -p /data/mysqldata/{3306/{data,tmp,binlog},backup,scripts} | |
chown -R mysql.mysql /data/mysqldata | |
su - mysql | |
more /usr/local/mysql/support-files/my-default.cnf | |
vi /data/mysqldata/3306/my.cnf |
my.cnf 配置文件内容如下:
[client] | |
port = 3306 | |
socket = /data/mysqldata/3306/mysql.sock | |
#The MySQL Server | |
[mysqld] | |
port = 3306 | |
user = mysql | |
socket = /data/mysqldata/3306/mysql.sock | |
pid-file = /data/mysqldata/3306/mysql.pid | |
basedir = /usr/local/mysql | |
datadir = /data/mysqldata/3306/data | |
tmpdir = /data/mysqldata/3306/tmp | |
open_files_limit = 10240 | |
explicit_defaults_for_timestamp | |
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES | |
#Buffer | |
max_allowed_packet = 256M | |
max_heap_table_size = 256M | |
net_buffer_length = 8k | |
sort_buffer_size = 2M | |
join_buffer_size = 4M | |
read_buffer_size = 2M | |
read_rnd_buffer_size = 16M | |
#Log | |
log-bin = /data/mysqldata/3306/binlog/mysql-bin | |
binlog_cache_size = 32M | |
max_binlog_cache_size = 512M | |
max_binlog_size = 512M | |
binlog_format = mixed | |
log_output = FILE | |
log-error = ../mysql-error.log | |
slow_query_log = 1 | |
slow_query_log_file = ../slow_query.log | |
general_log = 0 | |
general_log_file = ../general_query.log | |
expire-logs-days = 14 | |
#InnoDB | |
innodb_data_file_path = ibdata1:2048M:autoextend | |
innodb_log_file_size = 256M | |
innodb_log_files_in_group = 3 | |
innodb_buffer_pool_size = 1024M | |
[mysql] | |
no-auto-rehash | |
prompt = (\u@\h)[\d]>\_ | |
default-character-set = gbk |
初始化 MySQL 数据库:
$ /usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysqldata/3306/data --basedir=/usr/local/mysql
5.5 启动数据库服务:
mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf &
测试连接并查看 MySQL 进程和端口监听状态:
netstat -lnt | grep 3306 | |
ps -ef | grep bin/mysql | grep -v grep |
实际操作过程如下:
[root@JY-DB ~]# su - mysql | |
[mysql@JY-DB ~]$ mysql | |
Welcome to the MySQL monitor. Commands end with ; or \g. | |
Your MySQL connection id is 1 | |
Server version: 5.6.30-log JSS for mysqltest | |
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. | |
Oracle is a registered trademark of Oracle Corporation and/or its | |
affiliates. Other names may be trademarks of their respective | |
owners. | |
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. | |
(root@localhost)[(none)]> exit | |
Bye | |
[mysql@JY-DB ~]$ netstat -lnt |grep 3306 | |
tcp 0 0 :::3306 :::* LISTEN | |
[mysql@JY-DB ~]$ | |
[mysql@JY-DB ~]$ ps -ef | grep bin/mysql | grep -v grep | |
mysql 6736 1753 0 11:24 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf | |
mysql 7202 6736 0 11:24 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysqldata/3306/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysqldata/3306/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/data/mysqldata/3306/data/../mysql-error.log --open-files-limit=10240 --pid-file=/data/mysqldata/3306/mysql.pid --socket=/data/mysqldata/3306/mysql.sock --port=3306 |
Reference
- 李丙洋. 涂抹 MySQL. 水利水电出版社, 2014. PDF 下载见 http://www.linuxidc.com/Linux/2016-06/132479.htm
- dev.mysql.com
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-06/132477p2.htm
一、设定管理员用户和密码
二、处理 test 库权限隐患
三、自定义脚本提升易用性
- 中间定义文件
- 启动 MySQL 服务
- 关闭 MySQL 服务
- 快捷登录 MySQL
四、设置开机自动启动 MySQL 服务
Reference
一、设定管理员用户和密码
清除不安全的用户信息,设定管理员用户为 system,密码为 mysql。
具体操作步骤如下:
[mysql@JY-DB ~]$ mysql | |
Welcome to the MySQL monitor. Commands end with ; or \g. | |
Your MySQL connection id is 1 | |
Server version: 5.6.30-log JSS for mysqltest | |
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. | |
Oracle is a registered trademark of Oracle Corporation and/or its | |
affiliates. Other names may be trademarks of their respective | |
owners. | |
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. | |
(root@localhost)[(none)]> | |
(root@localhost)[(none)]> select user, host from mysql.user; | |
+------+----------------+ | |
| user | host | | |
+------+----------------+ | |
| root | 127.0.0.1 | | |
| root | ::1 | | |
| | jy-db | | |
| root | jy-db | | |
| | localhost | | |
| root | localhost | | |
+------+----------------+ | |
6 rows in set (0.04 sec) | |
(root@localhost)[(none)]> delete from mysql.user where (user,host) not in (select 'root', 'localhost'); | |
Query OK, 5 rows affected (0.05 sec) | |
(root@localhost)[(none)]> update mysql.user set user='system', password=password('mysql'); | |
Query OK, 1 row affected (0.03 sec) | |
Rows matched: 1 Changed: 1 Warnings: 0 | |
(root@localhost)[(none)]> flush privileges; | |
Query OK, 0 rows affected (0.03 sec) | |
(root@localhost)[(none)]> \q | |
Bye |
上面修改完成并刷新权限后,再次测试 MySQL 数据库连接,就必须需要指定用户名和密码登录了。具体操作步骤如下:
[mysql@JY-DB ~]$ mysql | |
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) | |
[mysql@JY-DB ~]$ mysql -usystem -pmysql | |
Warning: Using a password on the command line interface can be insecure. | |
Welcome to the MySQL monitor. Commands end with ; or \g. | |
Your MySQL connection id is 6 | |
Server version: 5.6.30-log JSS for mysqltest | |
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. | |
Oracle is a registered trademark of Oracle Corporation and/or its | |
affiliates. Other names may be trademarks of their respective | |
owners. | |
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. | |
(system@localhost)[(none)]> |
二、处理 test 库权限隐患
查看当前 mysql.db 信息:
(system@localhost)[(none)]> select * from mysql.db \G | |
*************************** 1. row *************************** | |
Host: % | |
Db: test | |
User: | |
Select_priv: Y | |
Insert_priv: Y | |
Update_priv: Y | |
Delete_priv: Y | |
Create_priv: Y | |
Drop_priv: Y | |
Grant_priv: N | |
References_priv: Y | |
Index_priv: Y | |
Alter_priv: Y | |
Create_tmp_table_priv: Y | |
Lock_tables_priv: Y | |
Create_view_priv: Y | |
Show_view_priv: Y | |
Create_routine_priv: Y | |
Alter_routine_priv: N | |
Execute_priv: N | |
Event_priv: Y | |
Trigger_priv: Y | |
*************************** 2. row *************************** | |
Host: % | |
Db: test\_% | |
User: | |
Select_priv: Y | |
Insert_priv: Y | |
Update_priv: Y | |
Delete_priv: Y | |
Create_priv: Y | |
Drop_priv: Y | |
Grant_priv: N | |
References_priv: Y | |
Index_priv: Y | |
Alter_priv: Y | |
Create_tmp_table_priv: Y | |
Lock_tables_priv: Y | |
Create_view_priv: Y | |
Show_view_priv: Y | |
Create_routine_priv: Y | |
Alter_routine_priv: N | |
Execute_priv: N | |
Event_priv: Y | |
Trigger_priv: Y | |
2 rows in set (0.00 sec) | |
(system@localhost)[(none)]> |
处理 test 库权限安全隐患:
(system@localhost)[(none)]> truncate table mysql.db; | |
Query OK, 0 rows affected (0.04 sec) | |
(system@localhost)[(none)]> flush privileges; | |
Query OK, 0 rows affected (0.00 sec) | |
(system@localhost)[(none)]> select * from mysql.db \G | |
Empty set (0.00 sec) | |
(system@localhost)[(none)]> |
三、自定义脚本提升易用性
3.1 中间定义文件
创建中间定义文件,提高脚本的复用性。
vi /data/mysqldata/scripts/mysql_env.ini
# set env | |
MYSQL_USER=system | |
MYSQL_PASS='mysql' | |
# check parameter | |
if [$# -ne 1 ] | |
then | |
HOST_PORT=3306 | |
else | |
HOST_PORT=$1 | |
fi |
由于文件包含密码等敏感信息,所以为了安全性,必须要修改文件的权限:
chmod 600 /data/mysqldata/scripts/mysql_env.ini
当然,如果对密码安全性要求很高,这里的配置文件中的密码可以置空,后续调用脚本手工输入密码即可。
3.2 启动 MySQL 服务
vi /data/mysqldata/scripts/mysql_db_startup.sh
source /data/mysqldata/scripts/mysql_env.ini | |
echo "Startup MySQL Service: localhost_"${HOST_PORT} | |
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/${HOST_PORT}/my.cnf & |
3.3 关闭 MySQL 服务
vi /data/mysqldata/scripts/mysql_db_shutdown.sh
source /data/mysqldata/scripts/mysql_env.ini | |
echo "Shutdown MySQL Service: localhost_"${HOST_PORT} | |
/usr/local/mysql/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PASS} -S /data/mysqldata/${HOST_PORT}/mysql.sock shutdown |
3.4 快捷登录 MySQL
vi /data/mysqldata/scripts/mysqlplus.sh
source /data/mysqldata/scripts/mysql_env.ini | |
echo "Login MySQL Service:localhost_"${HOST_PORT} | |
/usr/local/mysql/bin/mysql -u${MYSQL_USER} -p${MYSQL_PASS} -S /data/mysqldata/${HOST_PORT}/mysql.sock $2 |
最后,统一授予所有自定义脚本执行的权限:
chmod u+x /data/mysqldata/scripts/*.sh
配置 mysql 用户的环境变量,追加一行:
echo "export PATH=/data/mysqldata/scripts:\$PATH" >> ~/.bash_profile | |
source ~/.bash_profile |
至此,就可以在任意路径下执行脚本,提升了 MySQL 操作的易用性。
四、设置开机自动启动 MySQL 服务
在上述配置完成的基础上,
就可以直接在 root 用户下编辑 /etc/rc.local 文件,追加内容:
# autostart MySQL | |
sudo -i -u mysql /data/mysqldata/scripts/mysql_db_startup.sh 3306 > /home/mysql/mysql_db_startup.log 2>&1 |
Reference
- 李丙洋. 涂抹 MySQL. 水利水电出版社, 2014. PDF 下载见 http://www.linuxidc.com/Linux/2016-06/132479.htm
- dev.mysql.com
- 1. 主节点授权同步用户
- 2. 主节点修改配置文件
- 3. 从节点修改配置文件
- 4. 主节点锁定后查看状态
- 5. 从节点配置并启动同步、查看状态
- 6. 主节点解锁并验证从节点是否正常同步
环境:CentOS 6.7 + MySQL 5.6.30
主节点:192.168.56.102
从节点:192.168.56.103
已经分别安装好单机 MySQL,现在配置两台 MySQL 的主从复制。
1. 主节点授权同步用户
官方文档是分两步进行的:
mysql> CREATE USER ‘repl’@’%.mydomain.com’ IDENTIFIED BY ‘slavepass’;
mysql> GRANT REPLICATION SLAVE ON . TO ‘repl’@’%.mydomain.com’;
实际上一条命令即可:
grant replication slave,reload,super on *.* to 'repl'@'192.168.56.103' identified by 'asdfjkl';
2. 主节点修改配置文件
vi /data/mysqldata/3306/my.cnf
添加内容,其实主要是 server-id=102,另外对于 InnoDB,官档建议加两个参数:
[mysqld] | |
server-id=102 | |
#binlog-ignore-db = mysql | |
#replicate-do-db = xxdb | |
#InnoDB | |
innodb_flush_log_at_trx_commit=1 | |
sync_binlog=1 |
主节点重启 MySQL:
shell> mysqladmin shutdown | |
shell> mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf & |
3. 从节点修改配置文件
vi /data/mysqldata/3306/my.cnf
添加:
[mysqld] | |
server-id=103 | |
#replicate-do-db = xxdb |
从节点重启 MySQL:
shell> mysqladmin shutdown | |
shell> mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf & |
4. 主节点锁定后查看状态
主节点上锁:
mysql> FLUSH TABLES WITH READ LOCK;
主节点查看状态:
(root@localhost)[(none)]> show master status | |
-> ; | |
+------------------+----------+--------------+------------------+-------------------+ | |
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | | |
+------------------+----------+--------------+------------------+-------------------+ | |
| mysql-bin.000011 | 432 | | | | | |
+------------------+----------+--------------+------------------+-------------------+ | |
1 row in set (0.00 sec) |
5. 从节点配置并启动同步、查看状态
从节点配置:
mysql> CHANGE MASTER TO | |
MASTER_HOST='192.168.56.102', | |
MASTER_USER='repl', | |
MASTER_PASSWORD='asdfjkl', | |
MASTER_LOG_FILE='mysql-bin.000011', | |
MASTER_LOG_POS=432; |
这里的日志文件和当前位置是根据上一步查到的主节点状态填写的。
启动 SLAVE:
mysql> START SLAVE;
查看从节点状态:
mysql> show slave status \G
6. 主节点解锁并验证从节点是否正常同步
主节点解锁:
mysql> UNLOCK TABLES;
主节点建库:
mysql> create database xxdb;
从节点查看是否同步:
mysql> show databases;
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132477.htm
