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修改