MySQL--Linux安装
mysql总结
一、安装方式
mysql有多种安装方式,这里不去介绍window的安装,因为简单且没必要,我们只以linux系统centos7.5为例。mysql在centos中的安装大致有一下几种:
1、源码编译安装
这种方式就是直接给你源码,自行编译、安装,这种方式耗时最长,最复杂,但是最灵活,因为mysql5.7之后源码编译依赖boost库,同时mysql社区库为你提供了包含boost库的源码,和不包含boost库的源码, 接下一一介绍:
(1)包含boost库
1、安装依赖包
yum -y install make gcc-c++ cmake bison-devel ncurses-devel bison perl perl-devel perl perl-devel
2、解压到/usr/local目录下
tar -zxvf mysql-boost-5.7.11.tar.gz -C /usr/local
3、创建mysql组和用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql #创建不能登录的mysql用户
4、编译及安装mysql
cd /usr/local/mysql-5.7.11/
#配置,治理主要指定我的包包含boost的配置选项,具体配置,单独列出来
cmake \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_BOOST=boost \ #此处指定,包含boost
#编译和安装
make && make install
5、把原来的/etc/my.cnf备份
cp /etc/my.cnf /etc/my.cnf.bak
rm -f /etc/my.cnf
6、把安装目录用户和组更改为mysql
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
7、创建一个数据目录
mkdir -p /data/mysql/data/
8、初始化mysql,及开启ssl新功能
bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
bin/mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
9、 设为root是为了防止普通用户不小心删除数据库
chown -R root .
chown -R mysql /data
(2)不包含boost库
1、下载软件
到usr/local目录下:
cd /usr/local
wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
2、安装boost
注:此处如果只为安装mysql其实可以不用安装的,解压就好,到时安装mysql时引用目录,不过percona-xtrabackup需要用到,所以我安装了。
tar xzf boost_1_59_0.tar.gz
cd boost_1_59_0
./bootstrap.sh
./b2 install
3、安装myql
#1、安装依赖包
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake
#添加禁止登陆的mysql用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
#编译安装,从MySQL 5.7.5开始Boost库是必需的
mkdir -p /data/mysql
tar xzf mysql-5.7.11.tar.gz
cd mysql-5.7.11
#编译前进行配置,意思就是我的mysql安在哪里,数据文件存在哪里,配置文件存在哪里,用什么引擎、什么字符集等。
#在正式编译的时候会按照配置信息进行编译,编译成符合你的需求的mysql,当然很多属性也可以在配置文件配置。
#建议将cmake写成脚本,检查没有问题再执行。
#当然可以不配,有默认选项,但失去了源码编译的意义。
cmake . \
-DDOWNLOAD_BOOST=1 \ #指定需要外部的boost
-DWITH_BOOST=/usr/local/boost_1_59_0 \ #指定外外部的boost位置
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1
#编译安装
make && make install
其余与上相同
2、glib包安装方式
glib其实就是别人帮你编译好了的,不需要你自己去编译的版本。
(1)下载并解压
#可以直接下载,但是不建议这么下载,去官网用迅雷下会快很多
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
tar -zxvf linux-glibc2.12-x86_64.tar.gz
#重命名
mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql
mv mysql /usr/local/ -r
(2)创建用户和用户组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
#顺便把数据文件的目录创建好,并赋权
cd mysql
mkdir data
mkdir /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql
(3)初始化数据库
bin/mysqld --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --initialize
公共部分
但凡是源码、glib的安装方式,安装完数据库后需要对数据库进行一些服务配置,才能更友好的启动服务。
1、配置服务
#mysql查询配置文件的顺序大致如下: $baseDir(安装目录)/my.cnf > $dataDir(数据目录)/my.cnf
# > etc/my.cnf > etc/mysql/my.cnf > ~/.my.cnf
#我们可以任选一个位置存放配置信息,这里我们选择 /etc/my.cnf 如果没有配置文件,可以自己新建一个
#按照格式进行配置
cp support-files//my-default.cnf /etc/my.cnf
#将服务文件移至 /etc/init.d/ 就可以以服务形式启动mysqld服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
2、环境变量
#只有修改环境变量才能在终端任意位置使用mysql命令登录客户端,以及使用自带的各种工具
vi /etc/profile
# 在profile文件末尾增加两行
PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
export PATH
# 使PATH搜索路径立即生效:
source /etc/profile
3、配置文件
#按需修改配置文件
vi /etc/my.cnf
#修改第19行(取消注释且修改为) datadir = /data/mysql/data/
4、初始化数据
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
注: 之前版本mysql_install_db是在mysql_basedir/script下,5.7放在了mysql_install_db/bin目录下,且已被废弃
“–initialize”会生成一个随机密码(~/.mysql_secret),而”–initialize-insecure”不会生成密码
–datadir目标目录下不能有数据文件
5、启动数据库
# 如果无法启动,需要查看是否服务端的服务名称是mysqld
service mysql start
#或者
systemctl start mysql
3、rpm安装方式
(1)前往mysql官网下载所需的版本
Mysql5.7的rpm包下载地址为https://dev.mysql.com/downloads/mysql/ ,最好使用迅雷复制链接地址下载,具体方法:点击download,页面下方会显示 No thanks, just start my download.,一定要在此处右键,复制链接,在迅雷中下载。
下载完成后就上传的CentOS系统上。
(2)解压安装
[root@youxi2 ~]# mkdir Mysql //创建一个专门的Mysql目录
[root@youxi2 ~]# tar xf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar -C Mysql/ //将解压的文件放到Mysql目录下
[root@youxi2 ~]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio libaio-devel net-tools //安装依赖包
由于CentOS7开始自带的数据库是mariadb,所以需要卸载系统中的mariadb组件,才能安装mysql的组件
[root@youxi2 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@youxi2 ~]# yum -y remove mariadb-libs
现在开始安装mysql,由于依赖关系,所以顺序是固定的。
[root@youxi2 ~]# rpm -ivh Mysql/mysql-community-common-5.7.16-1.el7.x86_64.rpm
警告:Mysql/mysql-community-common-5.7.16-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-common-5.7.16-1.e################################# [100%]
[root@youxi2 ~]# rpm -ivh Mysql/mysql-community-libs-5.7.16-1.el7.x86_64.rpm
警告:Mysql/mysql-community-libs-5.7.16-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-libs-5.7.16-1.el7################################# [100%]
[root@youxi2 ~]# rpm -ivh Mysql/mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
警告:Mysql/mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-libs-compat-5.7.1################################# [100%]
[root@youxi2 ~]# rpm -ivh Mysql/mysql-community-client-5.7.16-1.el7.x86_64.rpm
警告:Mysql/mysql-community-client-5.7.16-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-client-5.7.16-1.e################################# [100%]
[root@youxi2 ~]# rpm -ivh Mysql/mysql-community-server-5.7.16-1.el7.x86_64.rpm //之后安装就成功了
警告:Mysql/mysql-community-server-5.7.16-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-server-5.7.16-1.e################################# [100%]
(3)启动
#该方式安装的mysql直接就能启动,基本上所有的设置都已经配置好了,开箱即用。但任需要安装依赖包
[root@youxi2 ~]# systemctl start mysqld
[root@youxi2 ~]# systemctl enable mysqld
[root@youxi2 ~]# systemctl status mysqld
4、yum安装
(1)配置YUM源
在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ ,这种方式是最简单的方式,但是对网络有一定的要求,如果能找到一些国内源,也是可以快速安装的,但是安装版本受源的限制,自由度最低,但是一条命令就能解决依赖问题、安装问题、配置问题。
# 下载mysql源安装包
shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# 安装mysql源
shell> yum localinstall mysql57-community-release-el7-8.noarch.rpm
检查mysql源是否安装成功
shell> yum repolist enabled | grep "mysql.*-community.*"
看到上图所示表示安装成功
(2)安装MySQL
shell> yum install mysql-community-server
(3)启动MySQL服务
shell> systemctl start mysqld
查看MySQL的启动状态
shell> systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
Active: active (running) since 五 2016-06-24 04:37:37 CST; 35min ago
Main PID: 2888 (mysqld)
CGroup: /system.slice/mysqld.service
└─2888 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
6月 24 04:37:36 localhost.localdomain systemd[1]: Starting MySQL Server...
6月 24 04:37:37 localhost.localdomain systemd[1]: Started MySQL Server.
(4)开机启动
shell> systemctl enable mysqld
shell> systemctl daemon-reload
#所有安装方式的公共部分
当启动服务之后的处理基本就一致了、基本的目地就是用客户端成功登陆并修改密码。
1、重置密码
注意:5.6的密码使用 cat /root/.mysql_secret 查询
[root@youxi2 ~]# grep "password" /var/log/mysqld.log //前往日志文件查找临时密码
2019-06-02T04:11:28.935057Z 1 [Note] A temporary password is generated for root@localhost: zS+u&ro49wbo
#登陆时使用引号包住,应为有特殊字符
[root@youxi2 ~]# mysql -uroot -p"zS+u&ro49wbo"
//可以看到设置简单的密码是会报错的,具体原因看第三步
mysql> alter user 'root'@'localhost' identified by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> alter user 'root'@'localhost' identified by 'root1234ABCD!@#$';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
#修改密码语句
alter user 'root'@'localhost' identified by 'root1234ABCD!@#$';
set password for root@localhost=password('root1234ABCD!@#$');
2、测试
由于有特殊符号,必须用引号包裹密码
[root@youxi2 ~]# mysql -u root -p'root1234ABCD!@#$'
mysql>
3、设置简单密码
有两种方法,一种在mysql里使用命令修改,一种直接修改配置文件。
在mysql里使用命令修改的办法:
[root@youxi2 ~]# mysql -u root -p'root1234ABCD!@#$'
mysql: [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 3
Server version: 5.7.16 MySQL Community Server (GPL)
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.
mysql> select @@validate_password_policy; //这个参数是密码复杂程度
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM |
+----------------------------+
1 row in set (0.02 sec)
mysql> select @@validate_password_length; //这个参数是密码长度
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 8 |
+----------------------------+
1 row in set (0.00 sec)
#对其进行设置
mysql> set global validate_password_policy=0; //global全局的
Query OK, 0 rows affected (0.02 sec)
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
mysql> set password for root@localhost=password('123');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> set password for root@localhost = password('1234'); //设置密码
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges; //刷新
Query OK, 0 rows affected (0.00 sec)
mysql> exit //退出
[root@youxi2 ~]# mysql -uroot -p1234
mysql>
说明:
1.validate_password_policy复杂度级别:0表示密码达到长度即可;1表示密码需达到长度,还需有数字、大小写字母(可以单一可以混合)以及特殊字符;2表示密码需达到长度,还需数字、大小写字母(可以单一可以混合)以及特殊字符字典文件。MEDIUM是中等,也就是1。
2.validate_password_length其实是一个动态的值,它的最小值等于validate_password_number_count+validate_password_special_char_count(2*validate_password_mixed_case_count),而这三个参数分别对应密码中数字、特殊字符、大小写字母的最小数量。我操作时设置了validate_password_length=1,实际再次读取validate_password_length的值是4。
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 4 |
+----------------------------+
1 row in set (0.00 sec)
直接修改配置文件的办法:
#如果测试,则推荐这种
[root@youxi2 ~]# vim /etc/my.cnf
validate-password=OFF //在[mysqld]模块内添加,将validate_password插件关闭
[root@youxi2 ~]# systemctl restart mysqld //重启mysqld服务
[root@youxi2 ~]# mysql -uroot -p1234
注意:Mysql5.7是自带validate_password插件,关闭后对密码没有复杂度要求,只需密码长度大于等于1。
建议:/etc/my.cnf中将默认字符集设置为utf8,即添加一行character_set_server=utf8,然后重启mysqld
二、目录结构
1、文件位置
不需要指定指定安装路径时,安装后的文件位置
1、数据库目录 /var/lib/mysql/
[root@hadoop2 mysql]# ll /var/lib/mysql/
总用量 176188
-rw-rw----. 1 mysql mysql 56 9月 6 22:50 auto.cnf
-rw-r-----. 1 mysql root 18977 9月 11 11:10 hadoop2.err #重要,错误日志
-rw-rw----. 1 mysql mysql 5 9月 11 11:10 hadoop2.pid #重要,进程Id
-rw-rw----. 1 mysql mysql 79691776 9月 11 11:10 ibdata1
-rw-rw----. 1 mysql mysql 50331648 9月 11 11:10 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 9月 6 22:50 ib_logfile1
-rw-r-----. 1 mysql root 11930 9月 7 00:00 localhost.localdomain.err
drwx------. 2 mysql mysql 4096 9月 8 19:54 metastore
drwx--x--x. 2 mysql mysql 4096 9月 6 22:50 mysql
srwxrwxrwx. 1 mysql mysql 0 9月 11 11:10 mysql.sock #重要socket文件
drwx------. 2 mysql mysql 4096 9月 6 22:50 performance_schema
-rw-r--r--. 1 root root 125 9月 6 22:50 RPM_UPGRADE_HISTORY
-rw-r--r--. 1 mysql mysql 125 9月 6 22:50 RPM_UPGRADE_MARKER-LAST
drwxr-xr-x. 2 mysql mysql 6 9月 6 22:50 test
2、配置文件 /usr/share/mysql(mysql.server命令及配置文件)
[root@hadoop2 mysql]# ll /usr/share/mysql/
总用量 1408
...
#有很多
-rwxr-xr-x. 1 root root 1126 3月 26 2015 my-default.cnf
-rwxr-xr-x. 1 root root 1061 3月 26 2015 mysqld_multi.server
-rwxr-xr-x. 1 root root 844 3月 26 2015 mysql-log-rotate
...
3、相关命令 /usr/bin(mysqladmin mysqldump等命令)
[root@hadoop2 mysql]# ll /usr/bin/ | grep mysql
-rwxr-xr-x. 1 root root 1539 3月 26 2015 msql2mysql
-rwxr-xr-x. 1 root root 9827283 3月 26 2015 mysql
-rwxr-xr-x. 1 root root 111743 3月 26 2015 mysqlaccess
-rw-r--r--. 1 root root 1702 3月 26 2015 mysqlaccess.conf
-rwxr-xr-x. 1 root root 8800122 3月 26 2015 mysqladmin
-rwxr-xr-x. 1 root root 9641970 3月 26 2015 mysqlbinlog
-rwxr-xr-x. 1 root root 11556 3月 26 2015 mysqlbug
-rwxr-xr-x. 1 root root 8787363 3月 26 2015 mysqlcheck
-rwxr-xr-x. 1 root root 7940770 3月 26 2015 mysql_config_editor
-rwxr-xr-x. 1 root root 4334 3月 26 2015 mysql_convert_table_format
-rwxr-xr-x. 1 root root 26356 3月 26 2015 mysqld_multi
-rwxr-xr-x. 1 root root 24723 3月 26 2015 mysqld_safe
-rwxr-xr-x. 1 root root 9066385 3月 26 2015 mysqldump
-rwxr-xr-x. 1 root root 7424 3月 26 2015 mysqldumpslow
-rwxr-xr-x. 1 root root 3409 3月 26 2015 mysql_find_rows
-rwxr-xr-x. 1 root root 1366 3月 26 2015 mysql_fix_extensions
-rwxr-xr-x. 1 root root 34938 3月 26 2015 mysqlhotcopy
-rwxr-xr-x. 1 root root 8803326 3月 26 2015 mysqlimport
-rwxr-xr-x. 1 root root 34612 3月 26 2015 mysql_install_db
-rwxr-xr-x. 1 root root 4942522 3月 26 2015 mysql_plugin
-rwxr-xr-x. 1 root root 10106 3月 26 2015 mysql_secure_installation
-rwxr-xr-x. 1 root root 17584 3月 26 2015 mysql_setpermission
-rwxr-xr-x. 1 root root 8779657 3月 26 2015 mysqlshow
-rwxr-xr-x. 1 root root 8871282 3月 26 2015 mysqlslap
-rwxr-xr-x. 1 root root 9533447 3月 26 2015 mysqltest
-rwxr-xr-x. 1 root root 4486861 3月 26 2015 mysql_tzinfo_to_sql
-rwxr-xr-x. 1 root root 5100141 3月 26 2015 mysql_upgrade
-rwxr-xr-x. 1 root root 4873768 3月 26 2015 mysql_waitpid
-rwxr-xr-x. 1 root root 3976 3月 26 2015 mysql_zap
4、启动脚本 /etc/rc.d/init.d/(启动脚本文件mysql的目录)
[root@hadoop2 mysql]# ll /etc/rc.d/init.d/ | grep mysql
-rwxr-xr-x. 1 root root 10815 3月 26 2015 mysql
指定目录安装
#文件目录
[root@hadoop1 mysql]# ll /usr/local/mysql/
总用量 64
drwxr-xr-x. 2 root root 4096 9月 10 16:05 bin
-rw-r--r--. 1 root root 17987 6月 10 22:43 COPYING
-rw-r--r--. 1 root root 17987 6月 10 22:43 COPYING-test
drwxr-xr-x. 2 root root 55 9月 10 16:04 docs
drwxr-xr-x. 3 root root 4096 9月 10 16:04 include
drwxr-xr-x. 4 root root 192 9月 10 16:05 lib
drwxr-xr-x. 4 root root 30 9月 10 16:04 man
drwxr-xr-x. 10 root root 4096 9月 10 16:05 mysql-test
-rw-r--r--. 1 root root 2478 6月 10 22:43 README
-rw-r--r--. 1 root root 2478 6月 10 22:43 README-test
drwxr-xr-x. 28 root root 4096 9月 10 16:05 share
drwxr-xr-x. 2 root root 90 9月 10 16:05 support-files
#数据库目录
[root@hadoop1 mysql]# ll /data/mysql/data/
总用量 122992
-rw-r-----. 1 mysql mysql 56 9月 10 16:10 auto.cnf
-rw-------. 1 mysql root 1679 9月 10 16:11 ca-key.pem
-rw-r--r--. 1 mysql root 1107 9月 10 16:11 ca.pem
-rw-r--r--. 1 mysql root 1107 9月 10 16:11 client-cert.pem
-rw-------. 1 mysql root 1679 9月 10 16:11 client-key.pem
-rw-r-----. 1 mysql mysql 12285 9月 10 17:58 hadoop1.err
-rw-r-----. 1 mysql mysql 6 9月 10 17:33 hadoop1.pid
-rw-r-----. 1 mysql mysql 209 9月 10 17:44 hadoop1-relay-bin.000001
-rw-r-----. 1 mysql mysql 1247 9月 10 17:50 hadoop1-relay-bin.000002
-rw-r-----. 1 mysql mysql 54 9月 10 17:44 hadoop1-relay-bin.index
-rw-r-----. 1 mysql mysql 354 9月 10 17:31 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 9月 10 17:33 ibdata1
-rw-r-----. 1 mysql mysql 50331648 9月 10 17:33 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 9月 10 16:10 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 9月 10 17:33 ibtmp1
-rw-r-----. 1 mysql mysql 134 9月 10 17:57 master.info
drwxr-x---. 2 mysql mysql 4096 9月 10 16:10 mysql
-rw-r-----. 1 mysql mysql 942 9月 10 17:50 mysql-bin.000001
-rw-r-----. 1 mysql mysql 19 9月 10 17:33 mysql-bin.index
drwxr-x---. 2 mysql mysql 8192 9月 10 16:10 performance_schema
-rw-------. 1 mysql root 1675 9月 10 16:11 private_key.pem
-rw-r--r--. 1 mysql root 451 9月 10 16:11 public_key.pem
-rw-r-----. 1 mysql mysql 63 9月 10 17:50 relay-log.info
-rw-r--r--. 1 mysql root 1107 9月 10 16:11 server-cert.pem
-rw-------. 1 mysql root 1679 9月 10 16:11 server-key.pem
# 启动自己复制到 /etc/init.d/
2、文件说明
(1)配置文件
mysql的服务启动时会加载一个配置文件在linux中叫my.cnf,在windows中叫mysql.ini,在linux中,mysql启动时加载配置文件的顺序如下:
(安装目录)/my.cnf >(数据目录)/my.cnf > etc/my.cnf > etc/mysql/my.cnf > ~/.my.cnf
配置文件的格式如下:(以下是简单的示例,不一定需要这么配,一般不会配折磨多,一般是启动时,指定目录文件,操作优化参数,开启或关闭功能组件)
[client] #使用client连接server时传递的参数,如果配了密码 就能直接登录
port = 3306
socket = /tmp/mysql.socket
[mysql]
prompt="\u@dbsvr_57 \R:\m:\s [\d]> "
no-auto-rehash
[mysqld] #启动时给mysqld传递的参数
user = mysql
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data/
socket = /tmp/mysql.socket
pid-file = dbsvr_57.pid
character-set-server = utf8mb4
skip_name_resolve = 1
open_files_limit = 65535
back_log = 1024
max_connections = 2000
max_connect_errors = 1000000
table_open_cache = 2048
table_definition_cache = 2048
table_open_cache_instances = 64
thread_stack = 512K
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 16M
join_buffer_size = 16M
thread_cache_size = 3000
interactive_timeout = 600
wait_timeout = 600
tmp_table_size = 96M
max_heap_table_size = 96M
slow_query_log = 1 #开启慢sql日志
slow_query_log_file = /usr/local/mysql/data/slow.log
log-error = /usr/local/mysql/data/error.log
long_query_time = 1.0
log_queries_not_using_indexes =1
log_throttle_queries_not_using_indexes = 60
min_examined_row_limit = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
server-id = 3306
log-bin = /usr/local/mysql/data/mybinlog #开启二进制日志
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
expire_logs_days = 30
master_info_repository = TABLE
relay_log_info_repository = TABLE
gtid_mode = on
enforce_gtid_consistency = 1
log_slave_updates
slave-rows-search-algorithms = 'INDEX_SCAN,HASH_SCAN'
binlog_format = row
binlog_checksum = 1
relay_log_recovery = 1
relay-log-purge = 1
key_buffer_size = 32M
read_buffer_size = 8M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
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 = 91750M
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_undo_directory = undolog
innodb_undo_tablespaces = 95
# 根据您的服务器IOPS能力适当调整
# 一般配普通SSD盘的话,可以调整到 10000 - 20000
# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
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
# some var for MySQL 5.7
innodb_checksums = 1
#innodb_file_format = Barracuda
#innodb_file_format_max = Barracuda
query_cache_size = 0
query_cache_type = 0
innodb_undo_logs = 128
innodb_status_file = 1
# 注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log-error文件增长较快
innodb_status_output = 0
innodb_status_output_locks = 0
#performance_schema
performance_schema = 1
performance_schema_instrument = '%=on'
#innodb monitor
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
(2)bin目录
这里提供了大量供我们使用的工具,最常用的有mysql ,mysqladmin,mysqldump,mysql_install_db,mysql_secure_installation 等。
mysql用来登录客户端
-u, --user=username: 指定用户
-p ,--password:密码
-h,--host:主机名或ip
-P,--port:端口
-S,--socket=name:指定socket文件
-e,--excute=name:非交互式执行命令
mysqladmin 用来执行指令 例如mysql shutdown -uroot -padmin 关系服务
reload 刷新授权表
shutdown 关闭服务
password 更改密码
status 查看状态
start-slave start slave
stop-slave stop slave
version 查看数据库版本
例子
[root@hadoop2 mysql]# mysqladmin version -uroot -padmin
Server version 5.6.24
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 45 min 52 sec
mysqldump用来进行数据库的逻辑备份
mysql_install_db用来初始化数据局
mysql_secure_installation 首次登录安全初始化数据库
(3)数据库目录
| 后缀 | 说明 |
|---|---|
| .frm | 每个表都有一个,存储了表的元数据。 |
| .MYD | myisam引擎使用的数据文件。 |
| .MYI | myisam存储索引信息,可以被缓存的信息来自这里。 |
| .ibd | 存放innoDB的数据文件,包括索引。独享表空间,一个表一个文件。 |
| .ibdata | 存放innoDB的数据文件,包括索引。共享表空间,所有表使用同一个(或几个,可配置)文件。 |
| db.opt | 每一个自建库都有一个该文件,记录库的字符集可校验规则。 |
| .socket | socket是客户端与服务端通信的文件,在service启动时产生。 |
| .PID | PID时服务端的进程ID,在service启动时产生。 |
| .err | 错误日志,一般是以 主机名.err 为名的文件,可以自由指定。 |
| .00001 | 二进制文件,用于主从备份。 |
(4)日志文件
a、一般查询日志
记录每一条sql语句,默认不开启。
general_log=1 #开启 /0关闭
b、慢查询日志
慢查询日志是记录一下查询较慢的sql语句,可用于优化系统。但是检查慢查询日志可能成为一项艰巨任务。为了简化这一过程,可以使用mysqldumpslow命令处理慢查询日志文件,以汇总日志中显示的查询。
默认是关闭的
#打开或关闭查询日志
slow_query_log=1 /0
slow_query_log_file=/path/file_name.log
log_output=
long_query_time=10 #单位是秒,自定义
c、二进制日志
记录数据库所有的更改,不包含select,show等语句,主要用于主从复制,数据恢复等场景。
默认不开启,建议开启,可以使用mysqlbinlog工具查看。
log_bin=xxxx #有这个参数就能开启,xxx是文件名会自动以.00001累加计数。
d、中级日志
主要用于主从复制,从服务器拉去主服务器的二进制文件后,从服务器先保存在自己的中级日志中,然后执行本地的relaylog里的sql达到数据一致,默认不开启。
relay_log 参数开启
e、错误日志
默认开启,重要的日志,存放启动,运行,停止时的错误信息。
log_error=/path/aaa.err #用于指定,不指定是hostname.err
三、数据备份
1、逻辑备份
备份的是建表、建库、插入的执行sql语句。
效率较低,适用于中小型数据库,一般在数据库正常服务的情况下进行,常用的工具mysqldump,mysqldumper、into outfile等
2、物理备份
直接复制数据库文件,适用于大型数据库,不受存储引擎限制,但是不能恢复到不同的mysql版本
一般是在数据库彻底关闭或者不能对外提供服务时进行备份,如tar,cp,xtrabackup(数据库可以正常提供服务),lvm snapshot,rsync等方式
3、在线热备
mysql的replocation架构,如M-S|M-S-S|M-M-S等
实时在线备份
四、主从架构
五、问题
1、忘了密码
1、停服务,service stop mysql
2、免密启动,mysqld_safe --skip-grant-tables --user=mysql &
3、登录 mysql
4、改密码
update mysql.user set password=password('456') where user='root' and host='localhost'

浙公网安备 33010602011771号