MySQL简介
MySQL原本是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被Sun公司收购。2009年,Oracle收购sun公司,MySQL成为Oracle旗下产品。
但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社区们对于Oracle是否还会持续支持MySQL社区版(MySQL之中唯一的免费版本)有所隐忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库。
MySQL的发展历史
作者:Monty 麦克尔·维德纽斯
- 1996年:发布MySQL1.0,开始是Solaris版本,后来又发布了Linux版本
- 1999年:Monty 在瑞典成立了 MySQL AB 公司
- 2003年:MySQL 5.0版本发布,增加了视图、存储过程等功能
- 2008年:被 sun公司 收购
- 2009年:Oracle 收购 sun
- 2009年:Monty 成立 MariaDB
版本的演变:
MySQL:5.1 --> 5.5 --> 5.6 --> 5.7
MariaDB:5.5 -->10.0--> 10.1 --> 10.2 --> 10.3
MariaDB的基本使用
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。
由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。
插件式存储引擎:也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择,Mysql5.5.5开始innoDB引擎是MYSQL默认引擎。MyISAM ==> Aria ,InnoDB ==> XtraDB
启动数据库
启动mysql或停止mysql的常用语句如下:
1、启动服务:
centos6:
service mysqld start
centos7:
systemctl start mysqld
2、重启服务:
cento6:
service mysqld restart
centos7:
systemctl restart mysqld
3、关闭服务:
cento6:
service mysqld stop
centos7:
systemctl stop mysqld
相关配置文件
主配置文件:从上到下检查,如果有重复的配置参数则在后边的配置文件中的参数生效,覆盖检索
1 /etc/my.cnf
2 /etc/mysql/my.cnf
3 /etc/sysconfig/my.cnf
4 /usr/local/etc/my.cnf
5 ~/.my.cnf
my.cnf
查看默认配置:
/usr/libexec/mysqld --print-defaults
默认数据库库文件存放目录:
/var/lib/mysql/
套接字文件
/var/lib/mysql/mysql.sock
PID文件
/var/run/mariadb/mariadb.pid
日志文件
/var/log/mariadb/mariadb.log
数据库管理系统
MySQL 数据库是一种C\S结构的软件,即分为:客户端和服务端。
若想访问服务器,则必须通过客户端;服务器应该一直运行,客户端则在需要使用的时候运行。
连接数据库
1、本地连接
mysql -u用户名 -p密码
例如:
mysql -uroot -p123456
其中 -u 与用户名root之间可以有空格;-p 与密码之间不能存在空格。
2、远程连接
mysql -u用户名 -p密码 -h IP地址 -P 端口号
例如
mysql -u root -p123456 -h 192.168.1.103 -P 3306
在连接时我们还可以指定具体登录的数据库,例如指定连接到testdb数据库
mysql -uroot -p123456 -D testdb
在本地连接到mysql时,可以指定通过特定套接文件连接到数据库
mysql -uroot -p123456 -S /var/lib/mysql/mysql.sock
连接数据库的同时执行对应命令,并返回命令结果,并不进入mysql提示符;即非交互式模式
mysql -uroot -p123123 -e 'use mysql; select user,host,password from user;'
mysql -uroot -p123123 -e 'create database if not exists testdb; show databases;'
数据库的常用选项
1 -A, --no-auto-rehash 禁止补全
2 -u, --user= 用户名,默认为root
3 -h, --host= 服务器主机,默认为localhost
4 -p, --passowrd= 用户密码,建议使用-p,默认为空密码
5 -P, --port= 服务器端口
6 -S, --socket= 指定连接socket文件路径
7 -D, --database= 指定默认数据库
8 -C, --compress 启用压缩
9 -e “SQL“ 执行SQL命令
10 -V, --version 显示版本
11 -v --verbose 显示详细信息
12 --print-defaults 获取程序默认使用的配置
选项
注:
1、prompt \u@[\D] \r:\m:\s-> 修改提示符,如果需要永久修改则在my.cnf中 [mysql] 下加入
prompt="(\u@\h) [\d]>
2、批量处理,将sql脚本导入库执行
mysql < /path/somefile.sql
获取帮助
使用help获取帮助
1 MariaDB [(none)]> help
2
3 General information about MariaDB can be found at
4 http://mariadb.org
5
6 List of all MySQL commands:
7 Note that all text commands must be first on line and end with ';'
8 ? (\?) Synonym for `help'.
9 clear (\c) Clear the current input statement.
10 connect (\r) Reconnect to the server. Optional arguments are db and host.
11 delimiter (\d) Set statement delimiter.
12 edit (\e) Edit command with $EDITOR.
13 ego (\G) Send command to mysql server, display result vertically.
14 exit (\q) Exit mysql. Same as quit.
15 go (\g) Send command to mysql server.
16 help (\h) Display this help.
17 nopager (\n) Disable pager, print to stdout.
18 notee (\t) Don't write into outfile.
19 pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
20 print (\p) Print current command.
21 prompt (\R) Change your mysql prompt.
22 quit (\q) Quit mysql.
23 rehash (\#) Rebuild completion hash.
24 source (\.) Execute an SQL script file. Takes a file name as an argument.
25 status (\s) Get status information from the server.
26 system (\!) Execute a system shell command.
27 tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
28 use (\u) Use another database. Takes database name as argument.
29 charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
30 warnings (\W) Show warnings after every statement.
31 nowarning (\w) Don't show warnings after every statement.
32
33 For server side help, type 'help contents'
help
安全加强脚本 mysql_secure_installation
这个脚本可以帮助我们做一下基本的安全加强
[root@centos7 mysql]# mysql_secure_installation
Enter current password for root (enter for none): #空密码直接回车
Set root password? [Y/n] Y #设置root密码
New password: ******
Re-enter new password: ******
Remove anonymous users? [Y/n] Y #删除匿名账户
Disallow root login remotely? [Y/n] n #禁用远程连接
Remove test database and access to it? [Y/n] Y #删除test库
Reload privilege tables now? [Y/n] Y #重读授权表使其配置生效
[root@centos7 mysql]# mysql -uroot -p'your_password' #连接数据库命令
*补充内容
SQL语言的简介和规范
是一种特定目的程序语言,用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理。
- 20世纪70年代,IBM开发出SQL,用于DB2
- 1981年,IBM推出SQL/DS数据库
- 业内标准微软和Sybase的T-SQL,Oracle的PL/SQL
- SQL作为关系型数据库所使用的标准语言,最初是基于IBM的实现在1986年被批准的。1987年,“国际标准化组织(ISO)”把ANSI(美国国家标准化组织) SQL作为国际标准。
- SQL:ANSI SQL ——SQL-86, SQL-89, SQL-92, SQL-99, SQL-03
SQL语言的规范
- 在数据库系统中,SQL语句不区分大小写(建议用大写)
- 但字符串常量区分大小写
- SQL语句可单行或多行书写,以“;”结尾
- 关键词不能跨多行或简写
- 用空格和缩进来提高语句的可读性
- 子句通常位于独立行,便于编辑,提高可读性
- 注释:
- SQL标准:
- /* 注释内容 */ 多行注释
- -- 注释内容 单行注释,注意有空格
- MySQL注释: #
- 数据库对象的命名规则
- 必须以字母开头
- 可包括数字和三个特殊字符(# _ $)
- 不要使用MySQL的保留字
- 同一database(Schema)下的对象不能同名
SQL语句的分类
- DDL: Data Defination Language 数据定义语言
- CREATE, DROP, ALTER
- DML: Data Manipulation Language 数据操作语言
- INSERT, DELETE, UPDATE
- DCL:Data Control Language 数据控制语言
- GRANT, REVOKE
- DQL:Data Query Language 数据查询语言
- SELECT