1.RPM包的安装配置
MySQL-client-5.5.56-1.el7.x86_64
MySQL-server-5.5.56-1.el7.x86_64
2.MySQL客户端和服务器端怎么通讯
UNIX:mysql -> mysqld 在一台服务器上,那么通讯通过mysql.sock通讯
Win:mysql -> memory(pipe) ->mysqld
3.如果不在一台主机,那么基于TCP/IP协议进行通讯
mysql -uroot -h192.168.42.129 只要通过外网访问,即是通过TCP/IP协议访问
4.MYSQL客户端工具
my.cnf中的[client]中的选项对以下都生效
mysql
mysqldumpm
mysqladmin
mysqlcheck
mysqlimport
5.MYSQL非客户端工具
myisamchk
myisampack
执行RPM包安装之后,执行
/usr/bin/mysql_install_db --user=mysql --datadir=/mydata/
删除匿名用户,其他的都是空密码:
select User,Host,Password from user;
mysql> drop user root@'::1';
Query OK, 0 rows affected (0.00 sec)
mysql> drop user ''@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> drop user''@localhost.localdomain;
Query OK, 0 rows affected (0.00 sec)
为其他用户添加密码:
mysql> update user set Password=PASSWORD('Local,001');
Query OK, 3 rows affected (0.00 sec)
MyISAM:
每个表有三个文件:
.frm:表结构
.MYD:表数据
.MYI:表索引
InnoDB:
所有表共享一个表空间文件;
建议每个表使用一个表空间文件,但是缺省条件下,这个参数是没有打开的。
mysql> show variables like '%innodb%';
可以查看到参数innodb_file_per_table
修改/etc/my.cnf
在[mysqld]中添加参数
innodb_file_per_table = 1
然后重启MySQL
每一个表使用一个表空间,这样的数据库定义了三个文件:
.frm:表结构
.ibd:表空间(表数据和表索引)
.opt:当前数据库的一些选项,包括字符集和排序选项
查看mysql数据文件的目录:
mysql> show variables like '%datadir%';
查看当前的默认数据库
mysql> select database();
默认情况下的数据库为NULL
MySQL客户端:
交互式模式:
批处理模式(脚本运行模式)
mysql> \?
查看mysql可以执行的命令
mysql> \. /root/my.sql
客户端命令:
\c:提取终止语句执行
\r:重新连接到服务器
\d:定义结束符
\g:无论语句结束符是什么,直接将此语句送至服务器端执行
\G:无论语句结束符是什么,直接将此语句送至服务器端执行,结果以竖排方式放置
\! COMMAND:执行SHELL命令
\W:语句执行结束后显示警告信息
\w:不显示警告信息
\#:对于新建的对象,支持补全功能
登陆的时候
mysql --html
可以将执行结果当做HTML输出
服务端命令:
help KEYWORD,譬如help select;help create index;
mysqladmin -uroot -pLocal,001
mysqladmin [options] command
mysqladmin -uroot -p password('NEW_PASS')
mysqladmin -uroot -pLocal,001 status --sleep 2
create DATABASE
drop DATABASE
ping
processlist
status
extended-status:显示状态变量
variables:显示服务器变量
flush-privileges(等同于reload):让mysqld重读授权表
flush-status:重置大多数的服务器状态变量
flush-logs:二进制和中继日志滚动,错误日志不会滚动,只会关闭后打开
flush-hosts:
refresh:相当于同时执行flush-hosts和flush-logs
shutdown:关闭数据库服务器进程
version:版本号,状态信息
start-slave:启动复制,启动从服务器复制线程
SQL thread
IO thread
stop-slave:停止服务线程
mysqldump,mysqlimport,mysqlcheck
开发视角:
数据类型;
约束;
数据库、表、索引、视图
SELECT语句
存储引擎,也被称为表类型:
MyISAM表:(不支持事务,仅支持表锁)
.frm:表结果定义文件
.MYD:表数据文件
.MYI:表索引
InnoDB表:事务,行锁
每个表打开一个表空间文件innodb_file_per_table,
表创建的时候如果不指定引擎,那么默认的就是InnoDB的引擎
.frm:表结构
.ibd:表空间(数据和索引)
SQL> SHOW ENGINES;
查看某个表是什么存储引擎:
mysql> show table status like 'user'\G
MySQL体系结构:
连接管理器 ---> 线程管理器
高速缓存 <--- 分析器(词法、语法分析)
优化器
执行引擎
存储引擎(表示层转化为物理层),行锁,事务的支持都是在这一层实现的
程序语言连接数据的方式:
动态SQL:通过函数或者方法与数据库服务器建立连接,将查询语句发往服务器
嵌入式SQL:用程序语言开发的,编译之后通过API访问。
my.cnf的查找顺序:
/etc/my.cnf --> /etc/mysql/my.cnf ---> $MYSQL_HOME/my.cnf ---> --default-extra-file = /path/to/file ---> ~/.my.cnf
最后一次找到的生效
写在配置文件中的,很多选项都可以
mysqld --verbose --help
数据类型:
数值型:
精确数值:int,decimal
近似数值:float,double,real
字符型:
定长:char,binary(区分大小写)
变长:varchar,varbinary(区分大小写)
text,blob
日期时间型:
date,time,datetime,timestamp
域属性,域限制
数据类型的意义:
1、存入的值类型
2、占据的存储空间
3、定长还是变长
4、如何比较及排序
5、是否能够索引
DATE:CCYY-MM-DD
TIME:hh:mm:ss
DATETIME:CCYY-MM-DD hh:mm:ss
TIMESTAMP:CCYY-MM-DD hh:mm:ss
YEAR:CCYY/YY
查看所有支持的字符集:
mysql> show character set;
查看字符集下的排序规则:
mysql> show collation;
Auto_Increment:Not NULL,必须创建索引,必须是整型,只能是正数,必须定义为主键或者唯一键
mysql> select LAST_INSERT_ID();查看上次创建的自增长的值