数据库

安装支持包

yum -y install ncurses-devel libaio-devel

解压cmake

tar xf cmake-2.8.6.tar.gz -C /usr/src/ cd /usr/src/cmake-2.8.6/
./configure && gmake && gmake install

建立MySQL用户账号

useradd -s /sbin/nologin -M mysql

解压mysql,配置及编译安装

tar xf mysql-5.5.22.tar.gz -C /usr/src/

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

修改属主,属组

chown -R mysql:root /usr/local/mysql

创建,修改my.cnf

/bin/cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

添加开机自启动

/bin/cp /usr/local/mysql/support-files/mysql.server
/etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig mysqld
–add

创建软链接

ln -s /usr/local/mysql/bin/* /usr/local/bin

执行mysql_install_db脚本初始化

/usr/local/mysql/scripts/mysql_install_db --user=mysql
–basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

启动mysql

/etc/init.d/mysqld start

查看监听端口

netstat -antup | grep 3306

查看所有数据库

show databases;

非交互式查看所有数据库

mysql -uroot -p111111 -e ‘show databases;’

创建yunjisuan数据库

create database yunjisuan;

删除yunjisuan数据库

drop database yunjisuan;

创建数据库的表

create table users (user_name char(20) not null,user_passwd char(30)
default ‘’,primary key (user_name));

select 字段名 from 空间名.表名 select user,host,password from mysql.user;
select * from mysql.user where user_name=’tzf’

查看表结构

desc yunjisuan.users;

插入数据

①insert into 空间名.表名(user_name,user_passwd)values(值1,值2) ②insert into
空间名.表名 values(值1,值2)

更新数据

update 空间名.表名 set(user_passwd)=’’ where user_name=’tzf’;

删除数据

delete from 空间名.表名 where user_name=’tzf’;

练习
在这里插入图片描述
建立数据库imployee_salary

mysql> use imployee_salary;

Database changed

创建数据库imployee_salary下的表table IT_salary

mysql> create table IT_salary(岗位类型 char(20) not null,姓名 char(20) not
null,年龄 int,员工ID int not null,学历 char(6),薪资 int not null,primary y
key(员工ID));

Query OK, 0 rows affected (0.02 sec)

mysql> insert into
IT_salary(岗位类型,姓名,年龄,员工ID,学历,薪资)values(‘老师’,‘孙’,‘20’,‘001’,‘本科’,‘12000’);

Query OK, 1 row affected (0.01 sec)

mysql> insert into
IT_salary(岗位类型,姓名,年龄,员工ID,学历,薪资)values(‘工程师’,‘田’,‘23’,‘002’,‘本科’,‘10000’);

Query OK, 1 row affected (0.00 sec)

mysql> insert into
IT_salary(岗位类型,姓名,年龄,员工ID,学历,薪资)values(‘软件工程师’,‘张’,‘30’,‘003’,‘本科’,‘40000’);

Query OK, 1 row affected (0.01 sec)

mysql> insert into
IT_salary(岗位类型,姓名,年龄,员工ID,学历,薪资)values(‘硬件工程师’,‘王’,‘33’,‘004’,‘博士’,‘45000’);

Query OK, 1 row affected (0.05 sec)

mysql> select * from IT_salary;

±----------------±-------±-------±---------±-------±-------+
| 岗位类型 | 姓名 | 年龄 | 员工ID | 学历 | 薪资 |
±----------------±-------±-------±---------±-------±-------+
| 老师 | 孙 | 20 | 1 | 本科 | 12000 |
| 工程师 | 田 | 23 | 2 | 本科 | 10000 |
| 软件工程师 | 张 | 30 | 3 | 本科 | 40000 |
| 硬件工程师 | 王 | 33 | 4 | 博士 | 45000 |
±----------------±-------±-------±---------±-------±-------+
4 rows in set (0.00 sec)

调用密码函数,对密码加密

update 空间名.表名 set password= password(‘’) where name=’tzf’;

(数据库的加密函数)
设置用户权限(用户名@登陆IP)用户

grant all on . to ‘root’@’192.168.163.1’ identified by ‘111111’
(all 所有的权限(select delete update insert)) grant all on . to ‘root@%’
identified by‘111111’(_ :任意单个字符,%任意长度的任意字符)

刷新数据

flush privileges

查看当前用户的权限

show grants;

查看其它用户的权限

show grants for ‘admin@192.168.163.1236’;

撤销用户权限

revoke select on . from ‘root@ 192.168.163.1’;

远程连接

远程登录,就算在本地登录,也要以-h远程的方式登录,真正的本地登录,后面是 -h 127.0.0.1(localhost)才是本地登录,这个登录的命令,没有指定IP,默认是-h localhost
grant all on . to ‘yunjisuan’@’localhost’ identified by ‘123123’;
flush privileges;再mysql -uyunjisuan -p123123 -h localhost 可以登陆了
以上是再客户端本机登录,在别的客户端想要登录还要创建别的登录IP
grant all on . to ‘yunjisuan’@’对方Ip’ identified by ‘123123’;
flush privileges;刷新后登录mysql -uyunjisuan -p123123 -h 本机IP 可登录成功。

备份策略:

小型公司 50-70台服务器 每天一次全备; 大型公司 每天一次增量备份,一周一次全备份。 全量备份

mysqldump(主库备份) 阻塞数据库的写入影响用户的写入,开启mysqldump其他用户不能写入数据
全量备份

mysqldump -uroot -p111111 yunjisun > /tmp/yunjisun-$(data+%y%m%d).sql
(数据库yunjisuan备份到 /tmp/yunjisun)

恢复全量备份

source /tmp/yunjisun- ( d a t a + &lt; / t m p / y u n j i s u n − (data+%F).sql (交互式恢复全量备份) mysql -uroot -p111111 &lt; /tmp/yunjisun- (data+</tmp/yunjisun(data+%y%m%d).sql (非交互式恢复全量备份)

误区:库名必须在,只能删除表,必须加参数mysqldump -uroot -p111111 --database yunjisun > /tmp/yunjisun-$(data +%F%T).sql

数据量50G 压缩数据包

mysqldump -uroot -p111111 --opt --all-databases| gzip-9 > /tmp/-$(data
+%F%T).gz(数据包是压缩包的4-5倍)

增量备份 (MySQL 提供的二进制日志间接实现)
vim /etc/my.cnf

开启MySQL的二进制日志功能log-bin=mysql-bin
开启 增量恢复的方法
一般的恢复:mysqlbinlog /usr/local/mysqldata/mysql-bin.000001| mysql -uroot -p111111
(flush logs; 刷新日志) show master startus;(显示操作的id)
位置恢复:mysqlbinlog --start-postion=’操作id’–stop-postion=’操作id’ /usr/local/mysqldata/mysql-bin.000001 | mysql -uroot -p111111
主从复制(前提:主库和从库数据一致)
主从复制的原理
主库 从库
1.打开binlog日志vi /data/3306/my.cnf
1.打开中继日志(relay-bin)
2.创建主从复制账号(mysql -uroot -p111111 -S /data/3306/mysql.sock) 2.激活主从复制 start slave;
3.建立用于从库复制的账号yunjisuan
grant replication slave on . to ‘yunjisuan’@‘192.168.0.%’ identified by ‘yunjisuan123’; 3.主从复制验证信息(主库的IP )
4.刷新权限(flush privileges; ) 4.server id =5
MySQL从库连接主库的配置:
CHANGE MASTER TO MASTER_HOST=‘192.168.0.200’,MASTER_PORT=3306,
MASTER_USER=‘yunjisuan’,MASTER_PASSWORD=‘yunjisuan123’,
MASTER_LOG_FILE=‘mysql-bin.000001’,MASTER_LOG_POS=533;
masterinfo (记录验证信息和二进制文件位置信息)/data/3307/data/master.info
清除主从复制 reset slave all;
测试主从复制配置情况
mysql -uroot -p111111 -S /data/3307/mysql.sock -e “show slave status\G”
主从同步是否成功,最关键的为下面的3项状态参数:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
索引的作用
1.降低数据库的IO成本
2.加快表与表之间的的连接
索引的分类(五种)
1)普通索引 2)唯一索引 3)主键(特殊的唯一索引)
4)全文索引 5)单列索引与多列索引
事务
事务的四个属性
1)原子性(Atomicity)
2)一致性(Consistency)
3)隔离性(Isolation)
4)持久性(Durability)
begin开启事务
在这里插入图片描述
查看系统内置变量
show variables like ‘autocommit’;
在这里插入图片描述
出现此情况
1.vim /etc/my.cnf #log-bin=mysql-bin(注释了就可以了)
2.删除mysql-bin.index
cd /usr/local/mysql/data
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值