mysal
mysql : (甲骨文公司Oracle)
数据库是我们平时用来存放数据的 存放动态数据
数据库的划分:整个分为关系型数据库,非关系型数据库
数据:描述事物的符号记录为数据(data)包括数字,文字,图形,图像,声音,档案记录等,以记录形式统一的格式进行存储。
表:将不同的记录组织在一起,就形成了表,是用来存储具体数据的
数据库:表的集合,是存储数据的仓库,以一定的组织方式存储的互相有关的数据,数据表多了放到目录里,目录就叫数据库
数据库:一种服务==mysql
关系型数据库:有关连的数据库 非关系数据库 : 键值对,类似于变量
sql:就类似于linux的命令,用来操作数据库的
产品阵营: 1阵营:5.0--5.1 2阵营: 5.4--5.7 3阵营:6.0--7.1
开始做mysql:(先将拉进来的压缩包解压)
tar xf cmake-2.8.6.tar.gz -C /usr/src tar xf mysql-5.5.22.tar.gz -C /usr/src
yum -y install ncurses-devel (devel: 系列)
cd /usr/src/cmake-2.8.6
./configure && gmake && gmake install (配置编译安装) (因为使用cmake编译mysql所以要先把cmake编译)
useradd -M -s /sbin/nologin mysql (创建一个程序用户)
cd /usr/src/mysql-5.5.22/其他
安装:# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all && make && make install

/usr/local/mysql (mysql程序运行目录,我们启动,运行的时候是让他用程序用户mysql去运行的)
chown -R mysql mysql/ (降权,如果不降权程序用户会进不去)或者用 chown -R mysql:root /usr/local/mysql这个命令也可以
/bin/cp my-medium.cnf /etc/my.cnf
vim /etc/my.cnf (这里面一般不用动)
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
mysql的命令在/usr/local/mysql/bin
ln -s /usr/local/mysql/bin/* /usr/local/bin (做个软连接,为了系统的env可以找到mysql的命令)

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ (安装mysql服务)

/etc/init.d/mysqld start (启动)
ss -antup : 端口号 Netid:协议 state:状态 listen是监听状态estab是表示连接上了 recv-Q :接收了多少流量 send-Q :发送流量 lal:本地监听端口号 peer:来源 netstat -antup==ss -antup
mysql:可以本地登录也可以远程登录
创建密码 : mysqladmin -uroot password 123123
mysql 的账号是由两个部分决定的:账号部分和ip部分
mysql -uroot -p123123
-h :指定连接哪个数据库(服务器) -P : 指定端口号
qps:每秒查询数
show databases; :展示所有的数据库
show tables; :查看数据库下有什么
select now(); :显示时间
create database +要创建库的名称 ; :创建库
use +要切换库的库名; :切换库的命令如linux的cd
select database( ); :查看当前所在库如linux命令的pwd
drop database +要删除的库;:命令
drop tables +要删除的表名; :删除表
describe mysql.user; :描述mysql下user表 (field:字段 type:类型 char:字节 enum: null:是否为空 key:关键字 extra:备注)
create table users(name char(30) not null,password char(40) default'',adrs char(10),primary key(name));(创建表命令)
show variables like 'char%'; :查看输出窗口使用的字符编码
set character_set_results=latin1; :设置输出窗口使用的字符编码
show full tabales; :查看库下有什么表
drop user 'yunjisuan'@'192.168.182.130'; :删除用户,不让用户登录
drop table +要删除的表名或者是哪个库下的表
insert into yun2.users(name,password,adrs) values('xiao','123123','sh'); :向表里添加内容,(name,password,adrs) 这个内容可以不写,不写就是默认全部字段,内容修改需要一一对应
select * from +要看哪个库下的哪个表; :查看表下所有内容
select +要查看哪个字段 from +要看哪个库下的哪个表; :查看表下的具体哪个字段
delete from +从哪删 where +要删除什么例如:name='xioa'; :删除表里的数据,后面要写主键,也就是带有;
唯一性的
update +哪个库里的表 set +要更新的东西 例如: password='3333' where +从哪里更新例如:
name='xioabai'; :是以一行一列定位的,更新数据
mysql.user :这个记录表记录的是我们数据库用户的数据表
select user,password,host from mysql.user;
update mysql.user set password=password('123456') where user='root'; :改密码(要用函数加密)
flush privileges; :更新一下,刷新命令
grant :授权命令 all:表示所有权限 *.* :表示所有库,所有表
grant all on *.* to 'yunjisuan'@'192.168.182.193' identified by'123123' :给192.168.182.193服务器yunjisuan账户所有库所有表的所有权限
select user,host from mysql.user; :查看给过谁权限
现在就可以去193服务器用yunjisuan账户登录了: mysql -uyunjisuan -p123123 -h192.168.182.129
show grants; :查看本地有什么权限,显示授权用户的安全权限
show grants for yunjisuan@192.168.182.193 : 查看别人有什么权限
MySQL通配符 : _ :任意单个字符 % :任意长度的任意字符
例如: grant all on *.* to 'yun'@'192.168.182.%' identified by'123123' :代表182网段的yun账户都可以登录(这里没有的用户会自动创建)
show status; :显示广泛的服务器状态信息
help create database; :创建特定数据库 help create tables; :创建特定表
show errors; :显示服务器错误信息 show warnings; :显示警告信息
select user( ); :显示当前连接账户 select now( ); :显示当前时间
新建用户格式: create user '用户名'@'来源地址' identified by '密码' :新建用户,这个命令建完用户还需要给权限
例如: create user 'admin'@'%' identified by '123123';
删除用户格式: drop user '用户名'@'来源地址'; 例如: drop user 'admin'@'%';
select user from mysql.user; :查看现有账户
为当前登录用户修改密码:set password=password('密码');
为其他用户修改密码: set password for '用户名'@'来源地址'=password('密码');
撤销权限格式: revoke 权限列表 on 库名.表名 from '用户名'@'来源地址';
例如:revoke select on *.* from 'yuanjisuan'@'192.168.182.193';
(注:这个撤销权限是当时给了什么权限就只能撤销什么权限,不可以单门撤销一个单列的权限)
super权限:超级权限 all:常用的普通权限 所有代表有了其中一个权限不一定代表有了另一个权限 (只能root去创建)
mysql日志:
错误日志:error级别以上全部都记录
通用日志:什么都记录
二进制日志: 记录你所有的动作
慢速查询日志: 记录工作时间长的sql语句
reload :重新加载
改配置前要先把服务关了,改完后在启动 /etc/init.d/mysqld stop
vim /etc/my.cnf
在[mysqld]模块最后添加
log-error=mysql_error.log (后面名随便起)(错误日志) 默认路径在/usr/local/mysql/data/下
log=/usr/local/mysql/data/mysql_general.log :通用日志
log-bin=mysql-bin :二进制日志,这个日志默认自带不用写创建
long_query_time=5 //单位为秒 (规定几秒后执行的命令算慢命令)
log-slow-queries=mysql_slow.log
写完后启动服务 /etc/init.d/mysqld start
过滤一下端口 ss -antup | grep 3306
造成数据丢失的原因:程序错误(应用奔溃,没有对数据进行备份 ) 人为错误(执行了rm -rf *) 计算机失败(电脑坏了)
磁盘失效(磁盘不能使用,一般不会坏) (灾难(如火灾,地震,和盗窃)做备份:使用阿里云===在不同的地域买服务器,借助阿里云自己的基地,帮我们做灾备)
数据库备份分类: 冷备份:在关闭数据库的时候备份 热备份:在数据库运行的时候备份 温备份:把表直接锁定,只让读,不让写入,进行备份。
完全备份:每次对数据进行完整备份 差异备份: 备份那些自从上次完全备份之后被修改过的所有文件备份 增量备份: 只备份上次完全备份或者增量备份后被修改过的文件备份
完全备份:
mysqldump -uroot -p123123 yun3 > yun3.sql (简单备份,不会打包)
进入到mysql里这里需要给他创建一个yun3,他只能备份数据,不备份数据库
cerate database yun3 use yun3
source /root/yun3.sql (恢复数据命令,这样就可以恢复数据了)
mysqldump -uroot -p123123 --databases yun2 yun3 > yun.sql (加了--databases就是把库也一起备份了,不在需要到mysql里面建库了用source直接恢复就可以)
--opt :加速作用 --all:所有
mysqldump -uroot -p123123 --opt --all -databases > all.sql (备份所有数据库,完全备份)
mysql -uroot -p123123 < all.sql (恢复数据)
外部非交互式执行命令 : mysql -uroot -p123123 -e 'show databases;' (-e :非交互式)