一 、mysql部分
1.修改mysql数据库的root用户密码:
知道密码的情况下修改密码:
mysqladmin -uroot -predhat password westos
忘记密码的情况下修改密码:
- systemctl stop mariadb.service
- mysqld_safe --skip-grant-tables
- mysql ## 重新打开一个shell,输入mysql即可免密登陆
- use mysql;
- update mysql.user set password=password('westos') where user='root;
- flush privileges;
- exit
- ps -aux | grep mysql && kill -9 10478(先杀掉跳过授权表的进程) && kill -9 10624(mysql服务启动后的进程)
- systemctl start mariadb
2. 创建用户和删除用户:
create user terry@localhost identified by '123';
drop user terry@localhost;
3.为用户授权和解除用户授权:
grant select on mysql.* to terry@localhost;
show grants for terry@localhost; ## 查看某用户的权限
revoke select on mysql.* from terry@localhost;
4. 数据库的查询:
show databases; ## 查看都有那些库
use mysql; ## 进入mysql这个库
show tables; ## 进入某个库后,查询该库中有那些表
desc user; ## 查看mysql库中的user表的数据结构,如字符个数,字符类型。
select host,user,password from mysql.user; ## 查看user表中的host、user、password三项的内容。
5. 数据库创建类:
create database school; ## 创建名为school的库
create table course ( English varchar(50) not null, math varchar(50) not null, PE varchar(50) not null); ## 在school库中创建一个名为course的表,该表中有English、math、PE三项内容,每项的内容最多容纳50个字符且不能为空。
insert into course values ('difficult', 'easy', 'interest'); ##为school这个库中的course表格插入内容。
6. 关于表项的操作:
alter table course rename course_xiyou ## 修改表格course的名字为course_xiyou
alter table course_xiyou add phylosical varchar(50) not null; ## 在表格course_xiyou中增加一个表项phylosical,默认将该项添加到表格的末尾。
alter table course_xiyou add history varchar(50) not null after English; ## 在表格course_xiyou中增加一个表项histoty,并将该项添加到English项的后面。
alter table course_xiyou drop phylosical; ## 删除掉course_xiyou表格中的phylosical项
insert into course_xiyou values (' ','hello',' ',''); ## 为表格course_xiyou插入新的内容
update course_xiyou set English='interest' where math='easy'; ### 更新表格course_xiyou中表项English的内容
delete from course_xiyou where history='interest'; ## 删除某个对象的所有表项,注意:最好匹配的关键词越多越好,避免删除掉其它对象的表项。
6. 关于数据库的删除:
drop table wife; ## 删除表wife
drop database family; ## 删除库family
7. 数据库的备份:
- mysqldump -uroot -predhat school > /mnt/school.sql
- vim /mnt/school.sql
- mysql -uroot -predhat < /mnt/school.sql
8.数据库的排序:
select * from suzhao order by high asc; ##根据列high的内容从小到大排序,若是字母,按照首字母从a到z由小到大
select * from suzhao order by high desc; ## 根据列high的内容从大到小排序
select * from suzhao order by high asc, hobby asc; ##先根据列high的内容由小到大排序,若遇到一样的则根据列hobby由小到大排序
9.数据库的主从复制:
1)主从复制的配置:
- 安装相关软件,搭建mysql的主从结构。
- 在master节点上的/etc/my.cnf文件中配置mysql数据库服务器的id,并开启二进制日志,在slave节点上先配置server-id即可。
- 开启mysqld服务, 并进行安全初始化。
- 在master节点上创建repl用户,使该用户可在slave节点远程登陆master节点。
create user repl@'172.25.11.%' identified by 'Wsgwz1994.';
grant replication slave on *.* to repl@'172.25.11.%';
- 在slave节点做设置,使master
change master to master_host='172.25.11.1', master_user='repl', master_password='Wsgwz1994.', master_log_file='mysqling-bin.000002', master_log_pos=1103;
- 在slave节点开启主从复制。
start slave;
- 用命令show slave status\G; 检测,若如下状态说明主从复制配置成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
2)gtid :和filename&pos方式一样,都是为slave定位同步数据的位置提供一个坐标,保证数据完整的同步,相比来说,gtid效率可能还没第一种方式高,但是,gtid对于运维人员来说更加友好。
3)主从复制的延时问题
原因: 1.网络原因(不稳定、带宽不够用)
2. slave主机的性能不够好。
3. 配置方面(参数优化)
4. sql执行大事务,而slave传递和接收master的二进制日志事件时,是单线程的工作方式,主库可以并发写,SQL线程不可以
5. 从库本身的一些操作有锁和资源的冲突
6. 5.6版本中:多线程(并行)复制,其核心思想是:不同库下的表并发提交时的数据不会相互影响,即slave节点可以用对relay log中不同的库各分配一个类似SQL功能的线程,来重放relay log中主库已经提交的事务,保持数据与主库一致。
7. 5.7版本中:基于组提交的并行复制
8.异步复制、全同步复制、半同步方式+超时无限大
操作系统部分:
1. 进程相关
1)进程的定义:
进程实体包括: 程序、相关的数据、进程控制块。
进程: 进程是程序在某个数据集合上的一次并发执行过程;进程实体的运行过程就是进程;进程是程序在执行过程中分配资源的基本单位。
2) 进程的特性:
- 动态性: 进程是进程实体执行的一次过程,是一个动态的概念; 进程因操作系统的创建而产生,因处理器的调度而执行,因操作系统的撤销而消失。
- 并发行: 进程的引入就是为了使原来不能并发执行的程序能够并发执行。
- 独立性: 在引入线程的计算机中,进程只作为独立分配资源的单位;在这之前,进程是一个能够独立运行,独立分配资源,独立被处理器调度的基本单位。
- 异步性: 并发执行的诸进程之间不是独立的,他们之间或因共享资源、或因合作完成某一任务,总是存在相互制约关系。
3).进程状态的定义:
一个进程的生命周期可以分为一组状态,这些状态刻画了整个进程。
4). 进程都有哪些状态:
- 运行态:指进程已经获得了CPU资源,正在执行。
- 就绪态: 指进程已经获得了除CPU意外其他的必要资源,一旦获得CPU,就可立即执行。
- 阻塞态 : 指正在执行的进程由于等待某个事件发生或者完成而无法继续执行,于是暂时放弃cpu处于暂停状态。
2. 哪些命令可以查看磁盘IO的资源访问情况:
top:
vmstat: