1979年:TcX公司 Monty Widenius,Unireg
1996年:发布MySQL1.0,Solaris版本,Linux版本
1999年:MySQL AB公司,瑞典
2003年:MySQL 5.0版本,提供视图、存储过程等功能
2008年:Sun 收购
2009年:Oracle收购sun
2009年:Monty成立MariaDB
Monty以两个女儿名字命名
大女儿My 小女儿Maria
一、官方网址:
https://www.mysql.com/
http://mariadb.org/
二、官方文档:
https://dev.mysql.com/doc/
https://mariadb.com/kb/en/
三、版本演变:
MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 -->8.0
MariaDB:5.5 -->10.0--> 10.1 --> 10.2 --> 10.3
四、去IOE(IBM的小型机、Oracle数据库、EMC存储设备)
yum info mariadb-server 可查版本Centos7用的Maria5.5
插件式存储引擎:也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;
用户可根据需要灵活选择(Mysql5.5.5开始,innoDB是MYSQL默认引擎)
MyISAM ==> Aria
InnoDB ==> XtraDB
单进程,多线程
诸多扩展和新特性
提供了较多测试组件
开源产品
安装方式:
一、源代码:编译安装
二、二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用
三、程序包管理器管理的程序包
CentOS 安装光盘
项目官方:https://downloads.mariadb.org/mariadb/repositories/
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-x.y.z/yum/centos/7/x86_64/
[root@dushan ~]#vim/etc/yum.repo.d/base.repo
# MariaDB 10.3 CentOS repository list - created 2019-01-06 16:28 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
[root@dushan ~]# yum install MariaDB-server MariaDB-client
[root@dushan ~]#systemctl start mariadb 启动mariadb
[root@dushan ~]#ss -ntlp 可以看到生成mysql进程
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=5294,fd=14)
[root@dushan ~]#ps aux 可以看到mysql进程是mysql用户生成的
mysql 5131 0.0 0.1 113304 1596 ? Ss 00:04 0:00 /bin/sh /usr/bin/mysqld_safe
mysql 5294 0.1 7.8 903340 84460 ? Sl 00:04 0:00 /usr/libexec/mysqld --basedi
[root@dushan ~]#getent passwd mysql 自动生成的mysql用户
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
[root@dushan ~]#ls -ld /var/lib/mysql 查看mysql家目录权限
drwxr-xr-x 5 mysql mysql 177 Jan 7 00:04 /var/lib/mysql
[root@dushan ~]#ll /var/lib/mysql/ 数据存放路径
total 28700
-rw-rw---- 1 mysql mysql 16384 Jan 7 00:04 aria_log.00000001
-rw-rw---- 1 mysql mysql 52 Jan 7 00:04 aria_log_control
-rw-rw---- 1 mysql mysql 18874368 Jan 7 00:04 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Jan 7 00:04 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Jan 7 00:04 ib_logfile1
drwx------ 2 mysql mysql 4096 Jan 7 00:04 mysql
srwxrwxrwx 1 mysql mysql 0 Jan 7 00:04 mysql.sock 本地进程服务端客户端都在本机,走socket文件,不需再走TCP协议的封装解封装,本地应用程序通讯时用
drwx------ 2 mysql mysql 4096 Jan 7 00:04 performance_schema
drwx------ 2 mysql mysql 6 Jan 7 00:04 test
[root@dushan ~]#pstree -p 可看是一进程多线程
提高安全性:mysql_secure_installation
设置数据库管理员root口令
删除anonymous用户帐号
禁止root远程登录
删除test数据库
权限立即生效
清空root密码
mysql>set password for root@localhost=password('');
一、客户端程序:
mysql: 交互式的CLI工具
mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中
mysqladmin:基于mysql协议管理mysqld
mysqlimport:数据导入工具
MyISAM存储引擎的管理工具:
myisamchk:检查MyISAM库
myisampack:打包MyISAM表,只读
二、服务器端程序:
mysqld_safe 主进程
mysqld 线程
mysqld_multi 多实例(运行多次,生产用一般不用多实例)
示例:mysqld_multi --example
账号组成:用户名@主机
dushan@'192.168.32.7'
replication@'localhost'
支持使用通配符:
% 匹配任意长度的任意字符
dushan@'172.16.%.%'
_ 匹配任意单个字符(类似通配符于?用法,表示一个字符)
create user dushan@'192.168.%.%' identified by 'centos';
一、交互式模式:可运行命令有两类
1.客户端命令:
每个命令都完整形式和简写格式
\h, help 客户端帮助
\s, status 数据库版本信息(字符集等信息)
\u use 相当于cd命令
\!, system 支持shell命令,执行的是本地端命令(SQL-Server是exec,执行的是远程端命令)
mysql>help
mysql>use mysql(use mysql进入mysql库)
mysql>\s
2.服务器端命令:
通过mysql协议发往服务器执行并取回结果
SQL语句,每个命令末尾都必须使用命令结束符号,默认为分号
mysql>select user();查看当前用户
mysql>SELECT User,Host,Password FROM user; 查看用户名对应主机
mysql>SELECT VERSION();
二、脚本模式:
mysql –uUSERNAME -pPASSWORD < /path/somefile.sql
或
mysql> source /path/somefile.sql
(进入后用source,与linux命令相似,对后缀没有要求,一般都用.sql)
-A, --no-auto-rehash 禁止补全
-u, --user= 用户名,默认为root
-h, --host= 服务器主机,默认为localhost
-p, --passowrd= 用户密码,建议使用-p,默认为空密码
-P, --port= 服务器端口 (MySQL:3306 oracle:1521 SQL_Server:1433,Windows远程桌面3389:mstsc)
-S, --socket= 指定连接socket文件路径
-D, --database= 指定默认数据库 mysql -uroot -pdushan -d mysql
-C, --compress 启用压缩
-e “SQL“ 执行SQL命令 mysql -uroot -pdushan -e "status"
-V, --version 显示版本
-v --verbose 显示详细信息
--print-defaults 获取程序默认使用的配置 mysql --print-defaults
一、可登录时写:
mysql --prompt="(\u@\h \v) [\d]> " -uroot -pdushan
二、可写到etc自定义文件:
vim /etc/profile.d/mysql.sh
export MYSQL_PS1="(\u@\h \v) [\d]> "
三、可写到mysql配置文件中(优先生效)
rpm -ql mariadb 查看配置文件在哪
cd /etc/my.cnf.d 进入文件夹根据man帮助找到mysql语句块文件(man mysql 查 /prompt)
vim mysql-clients.cnf
[mysql]
prompt="\\r:\\m:\\s> " 添加到mysql语句块下面
cat /etc/my.cnf
# include all files from the config directory
!includedir /etc/my.cnf.d
可知只要在my.cnf文件夹中有配置文件语句块即可,文件叫什么名字无所谓
服务器监听的两种socket地址:
ip socket: 监听在tcp的3306端口,支持远程通信
unix sock: 监听在sock文件上,仅支持本机通信
如:/var/lib/mysql/mysql.sock
删除后无法连接,重新启动后自动生成
host为localhost,127.0.0.1时自动使用unix sock
1.启动mysql后可查看mysqld的设置
[root@dushan17 ~]#ps aux|grep mysqld
mysql 9113 0.0 0.1 113304 1600 ? Ss 01:30 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql 9275 0.0 7.6 903340 81848 ? Sl 01:30 0:03 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root 10877 0.0 0.0 112708 972 pts/0 S+ 03:17 0:00 grep --color=auto mysqld
2.查看进程编号
[root@dushan17 ~]#cat /var/run/mariadb/mariadb.pid
9275
vim /etc/my.cnf
[mysqld] 是服务端(parameter参数 = value值)
bin_log=1
skip_name_resolve=1
innodb_file_per_table=1
_和- 相同
1,ON,TRUE意义相同
0,OFF,FALSE意义相同
后面覆盖前面的配置文件,顺序如下:
/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选项 用户家目录里
侦听3306/tcp端口可以在绑定有一个或全部接口IP上
vim /etc/my.cnf
[mysqld]
skip-networking=1