返回顶部

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'
posted @ 2020-09-05 11:05  Shamero  阅读(193)  评论(0)    收藏  举报