一.linux基本环境设置
1.ifconfig 系统管理型命令,查看系统的网络基本信息
2、虚拟机的网络连接方式
-》桥接
-》自动获取IP地址,与本机物理网络有关联
-》可以理解为虚拟机的网络和本机的物理网络使用的是一条网线
-》NAT(建议使用NAT)
-》在虚拟机中创建一个虚拟的网络空间,虚拟出一个网络来连接
-》VMnet8
-》可以去指定一个静态IP
3、设置静态IP
-》点击虚拟机【编辑】【虚拟网络编辑器】
-》IP地址范围:1-255,一般建议1和2不要去设置
-》设置IP之前先观察一下当前的网段,比如:192.168.189的网段
-》DHCP是一个服务,自动获取IP地址
-》GateWay就是网关
-》设置完成后建议重启下网络,使网络立即生效
4、hostname
-》查看当前系统的主机名
-》主机名的设置规范
-》名称要有意义
-》格式建议:主机名.域名
-》第一种设置主机名的方式:临时修改(只针对当前shell会话有效)
-》第二种设置主机名的方式:永久生效
-》vi /etc/sysconfig/network
—》进入文件,按i进入编辑状态
-》编辑完成后,按ESC键退出编辑状态
-》按shift+:然后进入最后行模式
-》按wq保存并推出,write&quit
-》可以重启机器验证是否配置成功
-》重启命令:reboot
-》命令行的格式
【当前登录的用户】【主机名】【当前所在的路径位置】
5、网络映射
格式:IP+主机名
Linux和windows都需要设置
windows配置文件路径:C:\Windows\System32\drivers\etc\hosts文件
192.168.189.130 bigdata-senior01.ibeifeng.com
6、设置DNS域名解析
www.baidu.com -》底层链接的是IP地址 -》有一个解析的过程
-》一般DNS设置为自己的网关IP地址就可以了
-》在网卡的配置文件中设置DNS解析
vi /etc/sysconfig/network-scripts/ifcfg-eth0
-》eth0表示网卡文件名,eth代表的含义:以太网
lo-》loopback回环网卡
DNS1=网关IP地址
重启网络:service network restart,生效
-》注意:命令行可以使用向上向下键查看历史的命令
www.baidu.com
-》类型com、cn、org等等
-》域名baidu
-》主机www
二.Linux系统的常用命令
1.ls: 查看命令
ls -l 显示详细信息 ls -a显示所有的文件包括隐藏文件(linux 中前缀为.的表示隐藏文件)
ls -d 查看目录或者文件本身的属性
2.pwd: 显示当前用户所在的路径,是绝对路径
3.clear /ctrl+l : 清除当前会话
4.cd: 移动到任何指定的目录下 cd .. 表示移动返回到上一级的目录 ,cd空格 表示回到用户的家目录
5. mkdir: 创建目录 mkdir -p test1/test2 -p表示可以一次递归创建多个目录
touch: 创建文件 注意:创建带有空格命名的文件时需要加上引号
6.rm:删除一个目录或者文件 rm -r删除目录 如果有子目录会询问是否删除 是输入y 否 输入n
rmdir 删除一个空目录 rm -rf 强制删除,删除时不询问,直接删除 建议谨慎使用
7.cp:复制文件 cp -r 复制目录 命令 原路径 目标路径
8.mv:剪切/重命名
9.cat:查看普通文件
more 分页查看文件 适合内容较多的文件,按空格翻页查看,按回车逐行查看,按q退出more的浏览状态
less分页查看文件 支持向上或者向下翻滚
head 查看文件的前几行 head后面直接跟上需要查看的行数 默认不加参数就是10行(head -5)
tail 查看文件末尾几行 tail后面直接跟上查看的行数 默认不加参数就是10行
tail -f 滚动实时查看 比较实用
10. cd 切换目录 cd ../ ../表示进入到上一级的目录
11.wc path 统计文件中的内容
-l 统计行号 -c 统计字节数 一个英文对应一个字节 一个中文对应多个字节
(UTF-8 3个字节 gbk 2个字节)
-m 统计字符数
12. find path 选项 查找文件
例如 find / -name 要查找的名字 *通配符 任意一个字符 可以重复 ?代表单个字符
find / -user 用户名 查找哪一个用户创建的文件或者目录
13.grep 查找文件中的内容 -i 不区分大小写 -n 显示行数 -w 仅匹配字词
14.| 管道服务 连接两个命令 前一个命令的输出作为后一个命令的输入
15.yum
即Yellowdog Update Modifier,是一种基于RPM (Red-Hat Package Manager)(RPM软件包管理器)的缩写的包管理工具。
yum search 名字 去搜索软件包
yum install -y 软件包名字 直接安装此软件
yum remove 卸载软件包
16. zip 压缩文件 unzip 解压文件
zip 目标文件.zip 源文件1 源文件2 。。。
unzip 目标文件.zip 解压文件至当前目录
解压指定目录下 unzip 目标文件.zip -d 指定路径
17.tar 压缩或者解压文件
tar -cvf 目标文件.tar 源文件1 源文件2 压缩文件至当前目录
tar-tvf 源文件.tar 查看压缩文件中的文件列表
tar -xvf 源文件.tar 解压文件至当前目录
tar -xvf 源文件.tar -C 指定路径 解压文件至指定路径下
18.输出重定向
>覆盖 >>追加
例如 echo hello>1.txt 将hello 写入1.txt文件中 echo hello>>1.txt 将hello 追加到文件内容的后面
三.Linux的目录结构
/:表示根目录,系统最外层的顶层目录,系统最初始的子目录
~:表示用户主目录 /root 管理员的家目录
/home 用户的家目录
每次的用户系统登录都在用户的主目录下
Linux系统的用户权限
1.创建用户:useradd 用户名
创建用户时 可以直接指定分组,如果不指定分组就默认创建一个组和用户名相同
例如 useradd zhangsan -g aowin -G root
其中 -G 表示附加组
passwd 用户名 给指定用户设置密码
userdel 用户名 删除用户
userdel -r 用户名 彻底删除用户
2. 创建组:groupadd 组名
groups 用户名 查看指定用户所在的组
groupdel 组名 删除组 如果该组下有用户是不能删除组的
3.改变用户的组
usermod -g 新的组名 用户名
4.切换登录账户
su - 用户名 切换环境变量
su 用户名 只切换用户,不会切换环境变量
root 用户切换普通用户时无需输入密码
普通用户切换root 时需要输入密码
Ctrl + D 退出登录
5.权限问题
查看文件权限 ll 或者ls -l
9个字符 3个为一组 分别都表示文件的创建者 和文件创建者同组的用户 其他用户
r 读权限 4 w 写权限 2 x可执行权限 1 对目录来说是进去该目录去查看
6.修改权限 root 用户 和文件的创建者才有修改文件的权限
方法1 chmod u(+/-) (rwx), g(+/-) (rwx), o(+/-)(rwx)
例如 chmod u-w,g-rwx,o-rwx 文件名字
方法2
最高权限的数字表示 777
r 代表4 w 代表2 x 代表1
7.修改文件所有者 只有root才可以操作
chown 用户:组 文件名
四.Linux shell
1.编程语言:解释型脚本语言,直接调用Linux命令
2.shell 解释器
3.Linux sh bash psh zsh
bash 一般是Linux 环境中评常用的shell环境
4.环境变量
用户变量 :只针对某个用户生效 ~/.bash_profile
全局变量:系统全局生效 /etc/profile
脚本规范 每个脚本开头的第一行都会有一个固定的格式
#!/bin/bash 声明当前使用的shell环境是哪一种
执行脚本方式:
(1)sh 脚本名称 直接执行
(2)./ 脚本名称 需要先赋予脚本的x执行权限
5.位置变量
echo 相当于打印
$1 第一个参数的值 ..... $9 第9个参数的值
6.预定义变量
$0 脚本的名称 $! 进程的PID号 $? 程序执行的状态 0成功 非0 不成功
$* 所有参数 整体 $$ 当前进程的id号 $#参数的总个数 $@ 所有参数 逐个读取
7.自定义变量
name=value 等号两边不能有空格 对大小写敏感 $符号取值
8.shell 脚本 常用表达式
a. 逻辑连接符 与 && 或|| :无逻辑关系
b. 运算 (a=1 b=2)
$[a+b] 或者 $[$a+$b]
$((a+b)) 或者$(($a+$b))
expr $a+$b
c.内置判断测试
字符串 = != \> \< -z
数字 在[] 中eq ne lt le gt ge
在(()) 中 >. == < != >= <=
文件中 -e -f -d -r -w -x
d 时间命令
查看 date + %Y%m%d%H%M
修改时间 date -s "2019-07-03 10:05:10"
五.Linux中安装mysql数据库 见教程
1.linux中 mysql登录
检查服务:
systemctl status mysqld 检查mysql服务的状态
systemctl start mysqld 启动mysql服务
linux 临时关闭防火墙 iptbles -F
查看防火墙状态 systemctl status iptables
设置开机不启动 chkconfig iptables off
开机启动 chkconfig iptables on
关闭防火墙 systemctl stop iptables
登录mysql 服务 mysql -u root -p 回车
**设置允许root 远程登录的方法
use mysql; 修改当前使用的数据库
update user set host ='%' where user = 'root' ;
2. mysql 中的基本sql
show databases; 查看所有的数据库
use 数据库名 ; 进入指定的数据库
show tables ; 查看所有的表
create database 数据库名; 新建一个数据库
drop database 数据库名; 删除一个数据库
3.建表
create table 表名(
列1名字 数据类型 列约束条件 [默认值],
列2名字 数据类型 列约束条件 [默认值],
…….
[表约束条件]
);
主键; 唯一的确定一条记录的字段
多主键:不能使用一列唯一确定一条记录 必须使用多列才能确定唯一一条记录
增加外键
ALTER TABLE 表名 ADD CONSTRAINT 自定义约束的名字 FOREIGN KEY (当前表的列) REFERENCES 主表表名(表中主键) ON DELETE RESTRICT ON UPDATE RESTRICT;
删除外键
alter table 表名 drop foreign key 外键约束名字;
4.新增记录
所有列新增 按照列的顺序赋值
insert into 表名 values(值1,值2.....);
批量新增
insert into user (username,password) values ('A','a'),('B','n'),('C','c');
批量新增 通过子查询 将查询的结果插入到表中 常用于表复制
insert into user (username,password) select 'd','d' from dual;
新建一张表 表结构和user一样 并且将查询结果插入到表格中
create table user_1 select * from user;
新建一张表 表结构和user一样 但是不复制数据
create table user_2 select * from user where 1!=1;
将user表中的数据全部导入到user_2表中
insert into user_2 select * from user;
5.修改记录
--单行记录
update user set 字段名=值 where 字段名=值;
--批量修改
update user set password = case user_id when 1 then '1' when 2 then '2'
when 3 then '3' else null end,
sex = case user_id when 1 then 0 when 2 then 1 when 3 then 0 end
where user_id in (1,2,3);
6.删除记录
delete from 表名 where ...
清空表
delete from 表名;dml 数据库操作语言 具有事务性
truncate table 表名;ddl 数据库定义语言 不具有事务性
truncate 清空表 效率更高 并且可以恢复高水位线
7.查询语句
select
查询的结果
from
查询的表
[where 条件]
[group by 分组]
[having 分组后的条件筛选]
[order by 排序]
[limit n,m]
-- 1. 基本查询
select username from user;
-- 2. 基本条件查询 = !=(<>) > < >= <= between(等价于 >= and <=)
select * from user where username between 'a' and 'z' -- username >= 'a' and username <= 'z'
-- 3. 别名 表别名 表名 [空格或者as] 表别名
select u.username,u.password from user as u;
-- 4. 列别名 列 [空格或者as] 列别名
select u.username a,u.password as b from user as u;
select username password from user; -- 给username列取了别名叫做password
select username, password from user; -- 查询两列数据
-- 5. like 模糊查询
/*
% 匹配任意长度的 任意字符
_ 匹配一个任意字符
*/
select * from user where username like '%z%'; -- 查询字符串中包含z的记录
select * from user where username like '%z'; -- 查询字符串中以z结尾的记录
select * from user where username like 'z%'; -- 查询字符串中以z开头的记录
select * from user where username like '_a_' ; -- 查询长度为3 并且中间一个字符是a的记录
-- 6. regexp 正则匹配
-- 查询用户名长度为4的用户信息
select * from user where username regexp '^.{4}$'
-- 查询用户名中包含a或者c或者d 字符的用户信息
select * from user where username regexp '[acd]'
-- 7. 查询空值 is null
select * from user where remark is null;
select * from user where remark = '';
-- 8. 查询非空 is not null
select * from user where remark is not null;
创建表格的约束:
1.主键约束primary key:主键和记录一一对应
主键字段不能为空,不能重复
2.外键约束foreign key:表格之间的关联关系
父表 子表=====》子表引用了父表的数据
插入数据的时候:子表中插入的数据在父表中一定是存在的,否则不能插入的
删除数据的时候:父表中数据删除的时候要求字表中没有引用数据
添加外键:alter table 子表 add constraint 外键名字 foreign key(外键字段) references 父表(主键字段);
可以增加删除策略:
alter table 子表 add constraint 外键名字 foreign key(外键字段) references 父表(主键字段) on delete cascade; 级联删除
alter table 子表 add constraint 外键名字 foreign key(外键字段) references 父表(主键字段) on delete set null; 删除父表,子表中设置为null
删除外键:alter table 子表 drop foreign key 外键名字;
tb_emp tb_dept
3.非空约束not null:插入的数据的时候,字段的值不能为空
4.唯一性约束unique:可以为空,如果不为空,值不能重复
5.默认值default:在不指定值的时候,默认的值