MySQL和MariaDB

官方网址:
		https://www.mysql.com/
		http://mariadb.org/
2、官方文档
		https://dev.mysql.com/doc/
		https://mariadb.com/kb/en/
3、版本演变:
		MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 -->8.0
		MariaDB:5.5 -->10.0--> 10.1 --> 10.2 --> 10.3
	```
### 安装MYSQL

Mariadb安装方式: 1、源代码:编译安装 2、二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用 3、程序包管理器管理的程序包 4、CentOS 安装光盘 项目官方:https://downloads.mariadb.org/mariadb/repositories/ 国内镜像:https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-x.y.z/yum/centos/7/x86_64/

### 二进制安装
> 二进制格式安装过程

1、下载二进制包,
			官网的下载路径:

wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.15/bintar-linux-x86_64/mariadb-10.2.15-linux-x86_64.tar.gz 这里的网络路径是我自己在本地搭的一个网络存放路径 wget http://172.20.7.53/yum/mariadb/mariadb-10.2.15-linux-x86_64.tar.gz

2、添加组和用户

[root@node2 ~]# groupadd -r -g 306 mysql [root@node2 ~]# useradd -g mysql -u 306 -r mysql

3、解压mariadb二进制包到/usr/local下去

[root@node2 ~]# tar xf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/

4、进入到/usr/local下面创建mysql的软连接

[root@node2 ~]# cd /usr/local/ [root@node2 /usr/local]# ln -s mariadb-10.2.15-linux-x86_64/ mysql

5、修改mysql的相对应的属主和属组权限
[root@node2 /usr/local]# chown -R root.mysql mysql/

6、创建数据文件的存放路径,并修改所属组的权限为mysql
 [root@node2 ~]#   cd /app/
 [root@node2 /app]# mkdir mydata
 [root@node2 ]#  chown -R mysql.mysql  /app

7、初始化数据库,指定好数据文件的存放路径和用户
   [root@node2 ]# cd /usr/local/mysql/
   [root@node2 /usr/local/mysql/]# scripts/mysql_install_db --datadir=/app/mydata --user=mysql

8、拷贝mariadb的启动脚本到/etc/rc.d/init.d下命名为mysqld
   [root@node2 /usr/local/mysql/]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

9、把mysqld设置为开机启动
   [root@node2 /usr/local/mysql/]# chkconfig --add mysqld

10、创建mariadb的配置文件存放路径,并拷贝模版文件到这个目录下命名为my.cnf
  [root@node2 /usr/local/mysql/]# mkdir /etc/mysql
  [root@node2 /usr/local/mysql/]#cp support-files/my-large.cnf /etc/mysql/my.cnf

11、配置系统环境变量,重读配置文件让它生效
  [root@node2 /usr/local/mysql/]# vim /etc/profile.d/mysql.sh
  [root@node2 /usr/local/mysql/]#export PATH=/usr/local/mysql/bin:$PATH
  [root@node2 /usr/local/mysql/]# . /etc/profile.d/mysql.sh

12、修改mariadb的配置文件需要增加几条内容
  [root@node2 /usr/local/mysql/]# vim /etc/mysql/my.cnf 
      lower_case_table_names = 1  
      character-set-server = utf8
      datadir = /app/mydata
      innodb_file_per_table = on
      skip_name_resolve = o

13、启动数据库服务
  [root@node2 /usr/local/mysql/]#  service mysqld start
				
14、查看mariadb的服务端口是否正常监听
		[root@node2 /app]#ss -tnl 
			State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
			LISTEN     0      128                      *:52874                                *:*                  
			LISTEN     0      128                      *:11211                                *:*                  
			LISTEN     0      128                      *:111                                  *:*                  
			LISTEN     0      128                      *:22                                   *:*                  
			LISTEN     0      128              127.0.0.1:631                                  *:*                  
			LISTEN     0      100              127.0.0.1:25                                   *:*                  
			LISTEN     0      80                      :::3306                                :::* 
			
15、数据库的安全初始操作,设置完之后就可以正常使用数据库了
    [root@node2 /app]#mysql_secure_installation 
    [root@node2 /app]#mysql -uroot -p 

### MYSQL的特性

1、插件式存储引擎: 也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择,Mysql5.5.5开始innoDB引擎是 MYSQL默认引擎 MyISAM ==> Aria InnoDB ==> XtraDB 2、单进程,多线程 3、诸多扩展和新特性 4、提供了较多测试组件 5、开源

### MariaDB程序

1、客户端程序: mysql: 交互式的CLI工具 mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中 mysqladmin:基于mysql协议管理mysqld mysqlimport:数据导入工具 2、MyISAM存储引擎的管理工具: myisamchk:检查MyISAM库 myisampack:打包MyISAM表,只读 3、服务器端程序 mysqld_safe mysqld mysqld_multi 多实例 ,示例:mysqld_multi --example

###  用户账号

mysql用户账号由两部分组成: 'USERNAME'@'HOST' 说明: HOST限制此用户可通过哪些远程主机连接mysql服务器 支持使用通配符: % 匹配任意长度的任意字符 172.16.0.0/255.255.0.0 或 172.16.%.% _ 匹配任意单个字符


###  Mysql 客户端

1、mysql使用模式: 2、交互式模式: 可运行命令有两类: 客户端命令: \h, help \u,use \s,status !,system 服务器端命令: SQL语句, 需要语句结束符;

客户端命令: (root@localhost) [(none)]> \s -------------- mysql Ver 15.1 Distrib 10.2.15-MariaDB, for Linux (x86_64) using readline 5.1

	Connection id:          11
	Current database:
	Current user:           root@localhost
	SSL:                    Not in use
	Current pager:          stdout
	Using outfile:          ''
	Using delimiter:        ;
	Server:                 MariaDB
	Server version:         10.2.15-MariaDB-log MariaDB Server
	Protocol version:       10
	Connection:             Localhost via UNIX socket
	Server characterset:    utf8
	Db     characterset:    utf8
	Client characterset:    utf8
	Conn.  characterset:    utf8
	UNIX socket:            /tmp/mysql.sock
	Uptime:                 49 sec

服务器端的命令: 05:36:22> select user,host from mysql.user; +------+-----------+ | user | host | +------+-----------+ | root | 127.0.0.1 | | root | ::1 | | root | localhost | +------+-----------+ 3 rows in set (0.00 sec)

3、脚本模式: mysql –uUSERNAME -pPASSWORD < /path/somefile.sql mysql> source /path/from/somefile.sql

示例: 1、在shell中直接导入sql语句 [root@node2 ~]#mysql -uroot -p123456 < test.sql Database information_schema mysql performance_schema user host password root localhost *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 root 127.0.0.1 *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 root ::1 *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9

	2、在mysql的命令行中用source 来导入sql语句
	(root@localhost) [(none)]> source test.sql
	+--------------------+
	| Database           |
	+--------------------+
	| information_schema |
	| mysql              |
	| performance_schema |
	+--------------------+
	3 rows in set (0.00 sec)

	+------+-----------+-------------------------------------------+
	| user | host      | password                                  |
	+------+-----------+-------------------------------------------+
	| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
	| root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
	| root | ::1       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
	+------+-----------+-------------------------------------------+
	3 rows in set (0.00 sec)


###  Mysql客户端

mysql客户端可用选项: -A, --no-auto-rehash 禁止补全 -u, --user= 用户名,默认为root -h, --host= 服务器主机,默认为localhost -p, --passowrd= 用户密码,建议使用-p,默认为空密码 -P, --port= 服务器端口 -S, --socket= 指定连接socket文件路径 -D, --database= 指定默认数据库 -C, --compress 启用压缩 -e “SQL“ 执行SQL命令 -V, --version 显示版本 -v --verbose 显示详细信息 --print-defaults 获取程序默认使用的配置

###  socket地址

服务器监听的两种socket地址: ip socket: 监听在tcp的3306端口,支持远程通信 unix sock: 监听在sock文件上,仅支持本机通信 如:/var/lib/mysql/mysql.sock 说明:host为localhost,127.0.0.1时自动使用unix sock

### 执行命令

1、运行mysql命令:默认空密码登录 mysql>use mysql 进入mysql库 mysql>select user(); 查看当前用户 mysql>SELECT User,Host,Password FROM user; 查看当前数据库中所有的用户列表

示例: (root@localhost) [(none)]> use mysql Database changed (root@localhost) [mysql]> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec)

	(root@localhost) [mysql]> select user,host,password from mysql.user;
	+------+-----------+-------------------------------------------+
	| user | host      | password                                  |
	+------+-----------+-------------------------------------------+
	| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
	| root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
	| root | ::1       | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
	+------+-----------+-------------------------------------------+
	3 rows in set (0.00 sec)

2、登录系统: mysql –uroot –p --------------------------------------------------------------------------------------------------------------- 示例: [root@node2 ~]#mysql -uroot -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 14 Server version: 10.2.15-MariaDB-log MariaDB Server

			Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

			Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

			(root@localhost) [(none)]> 

3、客户端命令:本地执行 mysql> help 每个命令都完×××式和简写格式 mysql> status 或 \s 4、服务端命令:通过mysql协议发往服务器执行并取回结果 每个命令末尾都必须使用命令结束符号,默认为分号 示例:SELECT VERSION();

### 服务器端配置

服务器端(mysqld): 工作特性有多种配置方式 1、命令行选项: 2、配置文件:类ini格式 集中式的配置,能够为mysql的各应用程序提供配置信息 [mysqld] [mysqld_safe] [mysqld_multi] [mysql] [mysqldump] [server] [client] 格式:parameter = value 说明:_和- 相同 1,ON,TRUE意义相同, 0,OFF,FALSE意义相同

### Mysql配置文件

配置文件: 后面覆盖前面的配置文件,顺序如下: /etc/my.cnf Global选项 /etc/mysql/my.cnf Global选项 SYSCONFDIR/my.cnf Global选项 $MYSQL_HOME/my.cnf Server-specific 选项 --defaults-extra-file=path ~/.my.cnf User-specific 选项


### MySQL配置

侦听3306/tcp端口可以在绑定有一个或全部接口IP上 vim /etc/my.cnf [mysqld] #通常用于mysql维护时加上这条只能在本地使用 skip-networking=1 关闭网络连接,只侦听本地客户端, 所有和服务器的交互都通过一个socket实现,socket的配置存放在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf或者/etc/mysql/my.cnf修改