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 修改
来源: http://www.bubuko.com/infodetail-2794781.html