Linux核心命令与符号
2024-10-15 10:16:12 0 举报
AI智能生成
Linux核心命令与符号是用于管理和控制Linux操作系统的关键工具。这些命令和符号允许用户与系统进行交互,执行各种任务,并了解系统状态。 核心命令如“ls”用于列出文件和目录,“cd”用于更改目录,“rm”用于删除文件,“mv”用于移动或重命名文件,以及“cp”用于复制文件。还有许多其他命令,如“ps”用于查看进程,“top”用于查看系统资源使用情况,以及“df”用于查看磁盘空间使用情况。 符号(如“>”、“>>”、“|”和“&”)用于将命令连接在一起,以创建更复杂的操作。例如,“>”可以将命令的输出重定向到一个文件,“>>”可以将输出追加到一个文件,而“|”可以将一个命令的输出作为另一个命令的输入。修饰语(如“-l”、“-a”和“-r”)用于修改命令的行为,如“-l”可用于以详细格式列出文件和目录,“-a”可用于显示隐藏文件,而“-r”可用于以递归方式操作目录。
作者其他创作
大纲/内容
shell编程
env 打印出当前环境中的所有环境变量及其值
shell脚本运行的三种方法
bash/sh
相对路径/绝对路径
source/.
环境变量生效层级
/etc/profile
.bash_profile
.bashrc
/etc/bashrc
位置变量
$0 # 获取脚本的名称
$n # 脚本传参的参数 $1表示第一个参数 $2表示第二个参数 以此类推 ${10}
$? # 上一条命令的执行结果 0成功 非0失败
$# # 脚本传参的个数
$$ # 脚本的PID号
$! # 上一个在后台运行脚本的PID号
了解
$* # 获取所有传参的参数 在循环体中和$@不同
$@ # 获取所有传参的参数 在循环体中和$*不同
$_ # 获取传参的最后一个参数
$n # 脚本传参的参数 $1表示第一个参数 $2表示第二个参数 以此类推 ${10}
$? # 上一条命令的执行结果 0成功 非0失败
$# # 脚本传参的个数
$$ # 脚本的PID号
$! # 上一个在后台运行脚本的PID号
了解
$* # 获取所有传参的参数 在循环体中和$@不同
$@ # 获取所有传参的参数 在循环体中和$*不同
$_ # 获取传参的最后一个参数
变量传参
直接传参
赋值传参
read传参(交互式)
命令的定义方法
``
eg: Time=`date +%F-%H-%M-%S` #时间只有在重新赋值后才会改变
&()
''
eg: Time='date +%F-%H-%M-%S' #实时变化
变量子串
统计字符串的长度
[root@shell:~]#echo oldboy|wc -L
6
[root@shell:~]#echo oldboy|awk '{print length}'
6
[root@shell:~]#expr length oldboy
6
[root@shell:~]#nam e=oldboy
[root@shell:~]#echo ${name}
oldboy
[root@shell:~]#echo ${#name}
6
6
[root@shell:~]#echo oldboy|awk '{print length}'
6
[root@shell:~]#expr length oldboy
6
[root@shell:~]#nam e=oldboy
[root@shell:~]#echo ${name}
oldboy
[root@shell:~]#echo ${#name}
6
子串的删除
从前往后删用 #
[root@shell:~]#echo ${url#www.}
baidu.com
[root@shell:~]#echo ${url#*.}
baidu.com
baidu.com
[root@shell:~]#echo ${url#*.}
baidu.com
[root@shell:~]#echo ${url#*.*.}
com
[root@shell:~]#echo ${url##*.} #贪婪匹配
com
com
[root@shell:~]#echo ${url##*.} #贪婪匹配
com
从后往前删用 %
[root@shell:~]#echo ${url%.com}
www.baidu
[root@shell:~]#echo ${url%%.*} #贪婪匹配
www
www.baidu
[root@shell:~]#echo ${url%%.*} #贪婪匹配
www
子串的替换
[root@shell:~]#echo ${url/baidu/sina}
www.sina.com
[root@shell:~]#echo ${url/w/A}
Aww.baidu.com
[root@shell:~]#echo ${url//w/A}
AAA.baidu.com
www.sina.com
[root@shell:~]#echo ${url/w/A}
Aww.baidu.com
[root@shell:~]#echo ${url//w/A}
AAA.baidu.com
数值运算
expr #只支持整数运算
[root@shell:~]#expr 1 + 1
2
[root@shell:~]#expr 1 + 10
11
[root@shell:~]#expr 1 - 10
-9
[root@shell:~]#expr 1 \* 10
10
[root@shell:~]#expr 1 / 10
0
[root@shell:~]#expr 100 / 10
10
2
[root@shell:~]#expr 1 + 10
11
[root@shell:~]#expr 1 - 10
-9
[root@shell:~]#expr 1 \* 10
10
[root@shell:~]#expr 1 / 10
0
[root@shell:~]#expr 100 / 10
10
$[]
[root@shell:~]#echo $[10+10*2]
30
[root@shell:~]#echo $[10+10*2-4]
26
[root@shell:~]#echo $[10/2]
5
[root@shell:~]#echo $[10%2]
0
[root@shell:~]#echo $[10%3]
1
30
[root@shell:~]#echo $[10+10*2-4]
26
[root@shell:~]#echo $[10/2]
5
[root@shell:~]#echo $[10%2]
0
[root@shell:~]#echo $[10%3]
1
$(())
[root@shell:~]#echo $((1+1))
2
[root@shell:~]#echo $((1*11))
11
[root@shell:~]#echo $((1111-11))
1100
[root@shell:~]#echo $((1111/11))
101
[root@shell:~]#echo $((1111%11))
0
2
[root@shell:~]#echo $((1*11))
11
[root@shell:~]#echo $((1111-11))
1100
[root@shell:~]#echo $((1111/11))
101
[root@shell:~]#echo $((1111%11))
0
let
[root@shell:~]#let a=1+1
[root@shell:~]#echo $a
2
[root@shell:~]#let a=10-5
[root@shell:~]#echo $a
5
[root@shell:~]#echo $a
2
[root@shell:~]#let a=10-5
[root@shell:~]#echo $a
5
bc
[root@shell:~]#echo 1+2|bc
3
[root@shell:~]#echo 1+2|bc
3
[root@shell:~]#echo 100-30|bc
70
[root@shell:~]#echo 100*30|bc
3000
[root@shell:~]#echo 100/30|bc
3
[root@shell:~]#echo 100+10.5|bc
110.5
[root@shell:~]#echo 100*10.5|bc
1050.0
[root@shell:~]#echo 100/3|bc
33
[root@shell:~]#echo 10/3|bc
3
3
[root@shell:~]#echo 1+2|bc
3
[root@shell:~]#echo 100-30|bc
70
[root@shell:~]#echo 100*30|bc
3000
[root@shell:~]#echo 100/30|bc
3
[root@shell:~]#echo 100+10.5|bc
110.5
[root@shell:~]#echo 100*10.5|bc
1050.0
[root@shell:~]#echo 100/3|bc
33
[root@shell:~]#echo 10/3|bc
3
awk
[root@shell:~]#awk 'BEGIN{print 10+10*2}'
30
计算内存的使用百分比
[root@shell:~]#free|awk 'NR==2{print $3/$2*100}'
27.8168
30
计算内存的使用百分比
[root@shell:~]#free|awk 'NR==2{print $3/$2*100}'
27.8168
python
[root@shell:~]#python3
Python 3.7.9 (default, Jun 10 2022, 11:25:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or
"license" for more information.
>>> 10+10
20
>>> 10*1199
11990
>>> 10*1.2222
12.222
>>> 10/3
3.3333333333333335
>>> quit
Use quit() or Ctrl-D (i.e. EOF) to exit
>>> quit()
Python 3.7.9 (default, Jun 10 2022, 11:25:35)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or
"license" for more information.
>>> 10+10
20
>>> 10*1199
11990
>>> 10*1.2222
12.222
>>> 10/3
3.3333333333333335
>>> quit
Use quit() or Ctrl-D (i.e. EOF) to exit
>>> quit()
表达式之文件判断
-f # 判断文件是否存在
-d # 判断目录是否存在
-e # 存在即为真
-r # 可读为真
-w # 可写为真
-x # 可执行为真
并且 -a
或者 -o
-d # 判断目录是否存在
-e # 存在即为真
-r # 可读为真
-w # 可写为真
-x # 可执行为真
并且 -a
或者 -o
-n 变量不为0则为真
-z 变量为0则为真
[root@shell:~]#length=''
[root@shell:~]#[ -z $length ] && echo 成立 || echo 不成立
成立
-z 变量为0则为真
[root@shell:~]#length=''
[root@shell:~]#[ -z $length ] && echo 成立 || echo 不成立
成立
条件表达式字符串比对
语法结构
[ 字符串1 = 字符串2 ] # 等于则为真
[ $USER = root ]
[ 5 -eq `cat passwd|wc -l` ]
[ 字符串1 != 字符串2 ] # 不等于则为真
[ $USER = root ]
[ 5 -eq `cat passwd|wc -l` ]
[ 字符串1 != 字符串2 ] # 不等于则为真
整数比较
语法结构
[ 整数1 比较符 整数2 ]
-eq # 相等
-ne # 不等于
-gt # 大于
-ge # 大于等于
-lt # 小于
-le # 小于等于
-eq # 相等
-ne # 不等于
-gt # 大于
-ge # 大于等于
-lt # 小于
-le # 小于等于
判断语句
if
单分支
if [ 条件表达式 ];then 相当于: [ 10 -eq 10 ] && echo xxx
执行的命令集合
fi
注意then的写法:
if [ 条件表达式 ]
then
执行的命令集合
fi
执行的命令集合
fi
注意then的写法:
if [ 条件表达式 ]
then
执行的命令集合
fi
if [ 你有钱 ];then
我就嫁给你
fi
我就嫁给你
fi
双分支
if [ 条件表达式 ];then 相当于: [ 10 -eq 10 ] && echo xxx || echo xxx
执行的命令集合
else
执行的命令集合
fi
执行的命令集合
else
执行的命令集合
fi
if [ 你有钱 ];then
我就嫁给你
else
滚
fi
我就嫁给你
else
滚
fi
多分支
if [ 条件表达式1 ];then
执行的命令集合
elif [ 条件表达式2 ];then
执行的命令集合
elif [ 条件表达式3 ];then
执行的命令集合
else
执行的命令集合
fi # 结尾的方式可以直接fi结尾
执行的命令集合
elif [ 条件表达式2 ];then
执行的命令集合
elif [ 条件表达式3 ];then
执行的命令集合
else
执行的命令集合
fi # 结尾的方式可以直接fi结尾
if [ 你有钱 ];then
我就嫁给你
elif [ 你有房子 ];then
交朋友
elif [ 你有车 ];then
我就吊着你
elif [ 你长的帅 ];then
先谈朋友吧
elif [ 你学习好 ];then
先订婚吧
else
你是个好人。
fi
我就嫁给你
elif [ 你有房子 ];then
交朋友
elif [ 你有车 ];then
我就吊着你
elif [ 你长的帅 ];then
先谈朋友吧
elif [ 你学习好 ];then
先订婚吧
else
你是个好人。
fi
case
case 变量 in
匹配序列1)
执行的命令集合
;;
匹配序列2)
执行的命令集合
;;
匹配序列3)
执行的命令集合
;;
*)
echo $Usage: $0 [xxx|xxx]
esac
匹配序列1)
执行的命令集合
;;
匹配序列2)
执行的命令集合
;;
匹配序列3)
执行的命令集合
;;
*)
echo $Usage: $0 [xxx|xxx]
esac
循环语句
for
while
函数
数组
查询帮助
man
命令--help
cmd.oldboyedu.com
系统管理
shutdown
-h
halt 关机
-r
reboot 重启
-c
cancel 取消
halt
poweroff
reboot
hostnamectl
修改主机名
hostnamectl
hostnamectl set-hostname xxxx
nmtui
查看和修改网卡信息
ifdown
关闭指定网卡信息
ifup
开启指定网卡
ubt中网卡配置生效
修改网卡配置文件
netplan apply
networkctl reload
systemctl
管理服务(开启,关闭,重启服务),设置开机自启动
systemctl restart network
start
stop
restart
systemctl disable firewalld
关闭开机自启动
enable
disable
systemctl stop firewalld
关闭正在运行的防火墙
systemctl status firewalld
lscpu
查看cpu信息
核心数
cpu型号
free
查询内存信息
-h 人类可读形式查看大小
uname
查看系统的信息,内核,主机名,cpu架构
-r
关闭selinux
setenforce 0
临时关闭
vim /etc/selinux/config 里面SELINUX=行改为SELINUX=disabled
getenforce
disabled 重启后才会提示
permissive 关闭
enforcing 开启的
ps
查看进程
-ef
aux
auxf
top
默认是交互式的显示系统系统命令
交互式:top
非交互式:top -bn1
kill
kill + pid
kill -9 pid
pkill
名字
killall
名字或pid
&
nohub 命令 &
网络管理
ip
ip a
ip address
ping
检查网络连通性
telnet
检查端口是否开启
ss
-ant 连接状态
-lntop 查看端口
查看系统多有开启的端口
netstat
与ss类似
dig
host
nslookup
iftop
nethogs
tracert
traceroute
route
查看路由表和默认网关
文件与目录基础指令
cd
进入指定目录
cd ~或cd 或老家
cd .. 进入上级目录
cd . 进入当前目录(一般不会与cd使用)
pwd
显示当前目录
ls
查看目录内容
-l long 显示详细信息
-h 以人类可读形式显示大小
-a 显示所有内容,包含隐藏的
-r
逆序排序
-t
按照修改时间排序
mkdir
创建目录
-p 创建多层目录(递归创建目录)
touch
创建文件,修改文件时间截
cp
复制,备份
-r
复制目录(递归复制)
-p
复制的时候保持文件或目录的属性不变(文件时间)
-a
相当于-pdr
scp
-r 目录
scp 10.0.0.7:/etc/passwd /etc/
scp /etc/ 10.0.0.7:/etc/passwd
mv
移动文件或目录,重命名
rm
删除文件或目录
-r
删除目录(递归删除)
-f
强制删除不提示
echo
输出信息到屏幕(标准输出)
>
>>
{}
cat
查看文件内容
-n number 显示文件行号
tree
以树形结构查看目录
-F 给不同类型的文件加上标记,目录加上/(斜线)
vim专题
快捷键
上下移动光标
移动光标到第一行
gg 或1G 或 :1
移动光标到最后一行
G或 :$
某一行
100gg 或100G 或 :100
左右移动
行尾
$
行首
0或^
复制删除粘贴
复制
yy
删除
dd
粘贴
p
其他
撤销
u(undo)
显示行号
:set nu
取消显示行号
:set nonu
搜索
/默认向下搜索
n继续向下搜索
N继续向上搜索
?默认向上搜索(很少用)
清空文件的内容
先到第一行
dG 一直删除到最后一行
批量操作)(可视块模式)
批量删除
批量添加
替换
:%s#IPADDR#oldboy#g
%是替换文件所有行,只要满足条件就替换
s#找谁#替换成什么#g
故障
清楚临时文件
文件与目录进阶指令
less
按页显示内容,到文件末尾不会退出
more
按页显示内容,到文件末尾会退出
head
显示文件开头几行内容,默认开头十行
-n5 显示开头五行
tail
显示文件最后几行内容,默认开头十行
-n5 显示最后五行
-f follow显示文件实时更新
wc
统计文件的信息,主要用来统计行数
-l(小写字母L)行数
sort
排序
-r
逆序排序
子主题
-n
数字排序(正)
-k
指定某列排序 eg:sort -k2
-t
uniq
去重
-c 去重并显示次数
合并相邻的两行内容
先把数据通过sotr排序,然后通过uniq去重统计次数
date
查看或修改时间
+%F
+%Y%m%d
+%T
+%H:%M:%S
+%w
-d
根据描述显示指定的日期
-s
set设置时间
ntpdate
自动同步时间
netdate 时间服务器地址
timeddatectl
显示和修改时区
tar
创建压缩包
tar zcf /backup/etc.tar.gz /etc/
常见的压缩包格式
.tar.gz
.tar.bz2
.tar.xz
....
查看
tar tf /backup/etc.tar.gz
解压
tar xf /backup/etc.tar.gz
解压到指定目录
tar xf /backup/etc.tar.gz -C /opt/
zip/unzip
zip -r压缩目录
unzip -d解压到指定目录
gzip
gzip
gzip -d xxx.gz
rz和sz
lrzsz
ln
创建硬连接
-s 创建软连接
Linux四剑客
find
-type类型
f 文件
d 目录
-name 名字
-size 大小
-mtime 修改时间
-maxdepth 最大深度
-o 或者 注意加上 \(\)
find与其他命令配合
grep /egrep
三剑客老三,擅长过滤
-i 过滤的时候不区分大小写
-n 给过滤出来的内容加上行号
-o 显示grep执行过程正则每次匹配到的内容
grep -E = = egrep 支持扩展正则
egrep中 |表示或者(正则)
A 过滤到内容往上多显示n行 cat.2.txt | grep -A5 3(过滤到3多显示五行)
B 过滤到内容往下多显示n行
C 过滤到内容往上下都多显示n行
sed
擅长取行,替换,修改文件内容
选项
-n 取消默认输出,一般与p一起使用
-r 支持扩展正则
-i 或 -i.bak 修改文件内容,选项谨慎,选项放在最后
-i.bak 先备份文件,然后修改
查找
-n 与p
替换
s###g
反向引用
实现取列
根据需求处理某一行的内容
删除
d
增加
cai
awk
擅长取列
取列
awk‘{print $1,$NF,$(NF-)}’ 文件
磁盘管理
df
查看磁盘空间整体使用情况
-h
-T显示文件系统类型
xfs
ext4
du
查看目录大小
-sh
file
查看文件类型
stat
查看文件属性信息,文件名
fdisk
parted
mkfs
格式化,创建文件系统
mkfs.xfs
mkfs -t xfs
mkfs.ext4
mount
挂载,给设备设置入口,入口就是挂载点,挂载点是目录
umount
卸载
mkswap
格式化,创建swap
swapon
启动swap
swapoff
关闭swap
lsof
list open files 显示出所有被打开的文件
lsof |grep delete
dd
dd if=/dev/zero of=/tmp/xxxx bs=1M count=100
用户管理专题命令
useradd
添加用户
-u
-s
-m
-M
adduser
passwd
设置或修改密码
--stdin 非交互设置密码)(红帽)
chpasswd
批量修改密码
su
切换用户
su -
userdel
删除用户
-r 删除用户并且删除家目录,删除用户的邮箱文件
id
查看用户信息
查看用户是否存在
w
查看谁登录系统并且正在干啥
uptime w命令的第一行
who w命令后面几行
能看到当前系统登录用户数
who
uptime
last
lastlog
whoami
usermod
修改用户信息
visudo
sudo
alias
查看/设置
临时取消别名
\rm
/bin/rm
权限管理体系
chmod
change mode修改权限
数字权限
字符+x
chmod u+x 1.txt # 授权1.txt 属主拥有执行权限
chmod u-x 1.txt # 取消属主的x权限
chmod o+w 1.txt # 陌生人可以编写文件
chmod g+w 1.txt # 授权组内成员可以写
授权多个位置:
chmod ug+x 1.txt # 授权属组和属主执行权限
chmod ugo+x 1.txt# 授权所有用户执行权限
chmod a+x 1.txt # 授权所有用户执行权限
chmod +x 1.txt # 授权所有用户执行权限
chmod -x 1.txt # 取消所有用户的x权限
先清空后赋值的方式:
chmod u=x 1.txt # 清空属主的权限,然后赋值x权限
chmod ugo=r 1.txt# 清空所有权限 只给每个位置只读权限
chmo =x 1.txt # 清空所有权限 只给每个位置执行权限
chmod u-x 1.txt # 取消属主的x权限
chmod o+w 1.txt # 陌生人可以编写文件
chmod g+w 1.txt # 授权组内成员可以写
授权多个位置:
chmod ug+x 1.txt # 授权属组和属主执行权限
chmod ugo+x 1.txt# 授权所有用户执行权限
chmod a+x 1.txt # 授权所有用户执行权限
chmod +x 1.txt # 授权所有用户执行权限
chmod -x 1.txt # 取消所有用户的x权限
先清空后赋值的方式:
chmod u=x 1.txt # 清空属主的权限,然后赋值x权限
chmod ugo=r 1.txt# 清空所有权限 只给每个位置只读权限
chmo =x 1.txt # 清空所有权限 只给每个位置执行权限
chown
change owner 修改所有者
chown oldboy.oldboy
chown oldboy
lsattr
chattr
umask
了解:控制系统默认权限
软件包管理
yum
install
安装软件包,升级
-y默认都选yes
localinstall
安装本地已经下载好的rpm包
yum查询依赖,下载依赖,安装依赖
provides
查询依赖的软件包活命令属于软件包
list
update
apt
apt update
apt install
rpm
-qa
检查软件是否安装
-e
不使用的工具放着就行,如果是服务关闭即可
删除软件包
-ivh
安装
-Uvh
安装和升级
-ql
查看软件包内容
-aV
检查命令是否变化了
配置,命令
软件刚安装的时候和当前
dpkg
-i
安装
rpm -ivh
-l
检查软件是否安装\
rpm -qa
-L
查看软件包内容
rpm -ql
-r
删除软件包
rpm -e
-V
检查命令是否变化了
rpm -aV
安装常用应用
tree
telnet
vim
bash-completion
bash-completion-extras
lrzsz
zip,unzip
pstree
软件包psmisc
特殊符号
~
当前用户的家目录
root用户 /root/
oldboy用户 /home/oldboy/
..
当前目录的上级目录
.
当前目录
复制文件到当前目录
>
重定向符号:先清空文件的内容,然后在写入
如果文件不存在,替你创建
>>
追加重定向:质保数据写入到文件结尾
标准输出追加重定向
{}
花括号,大括号
生成序列(数字,字母)
用法
{1..20}
{01..100}
与Linux命令mkdir,touch,echo
批量创建目录,文件,输出
|
管道符号
把管道前面的命令输出,传递给后面的命令
1个命令无法直接获取到我们想要的结果
根据处理流程
列出步骤,根据步骤找出命令
根据顺序一个一个添加管道
"反引号
优先执行引导里面的命令
先获取指令的结果然后把结果交给其他命令使用
创建文件,目录,压缩包(带时间)
环境变量
一般系统定义
PS1
控制命令行格式
LANG
language语言,字符集
PATH
path 路,小路
存放命令的路径
持续集成
git
git add
git add a.txt
git commit -m "描述"
git log
看快照
git reflog
查看所有任何时候的快照
git reset --hard 快照名字/标签(版本号)
回滚快照
git分支
git branch 查看当前分支
git branch dev 创建dev分支
git branch -d dev 删除dev分支
git checkout dev 切换到dev分支
git merge dev 合并分支
git标签--可以理解为版本号
git tag -a v1.0 快照哈希值 -m "v1.0稳定版本"
git tag
查看tag
git show v1.0
查看详细信息
git tag -d v1.1
删除标签
数据库
安装方式
yum/apt-get 可以解决软件依赖关系(配置好下载源)
rpm包安装 需要提前在软件包,离线安装软件
源码编译安装可以定制化安装软件,离线安装软件
二进制包安装 可以快速部署数据库,离线安装软件 讲解安装过程
安装部署步骤
下载获取二进制软件包
系统环境基础配置(优化)
1)确认系统是否可以连网/可以远程控制
2)修改系统主机名称/设置名称和地址解析(可选)
3)关闭系统安全功能
4)清理系统中的数据库服务
5) 安装mysql依赖软件
6)创建服务用户与存储数据目录
解压安装数据库软件程序
编写数据库服务配置文件
数据库服务初始化操作(创建默认数据库中数据信息)
数据库启动关闭管理
利用脚本(默认实现数据单实例启动过程)
启动异常
查看错误日志 cat /data/3306/data/db-01.err
查看配置文件信息 cat /etc/my.cnf
利用命令(多实例)
mysqld
mysqld_safe
systemctl
数据库密码信息管理
设置密码
修改密码
重置密码
数据库用户管理知识
数据库用户权限管理
show privileges;
Privilege -- 数据库所有权限
Context -- 权限控制的对象
Comment -- 对权限解释说明
Alter | Tables | To alter the table
表 修改表信息(属性信息-结构 字符集 引擎 索引 数据类型)
Create | Databases,Tables,Indexes | To create new databases and tables
库 表 索引 可以拥有创建新库 新表 - 表中索引创建
Create user | Server Admin | To create new users
具有服务管理能力 创建新用户
Delete | Tables | To delete existing rows
表 删除表数据信息权利
Drop | Databases,Tables | To drop databases, tables, and views
库 表 删除数据库 删除表 删除视图???
Index | Tables | To create or drop indexes
表 在表中可以创建或删除索引信息
Insert | Tables | To insert data into tables
表 插入/添加表数据信息权利
Select | Tables | To retrieve rows from table
表 查看表中数据权限
Show databases | Server Admin | To see all databases with SHOW DATABASES
具有服务管理能力 可以查看所有数据库信息
Update | Tables | To update existing rows
表 修改表数据信息权利
Usage | Server Admin | No privileges - allow connect only
具有服务管理能力 数据库服务登录权利(默认权限)
Grant option | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess
库 表 函数 存储过程 可以给别人进行授权的权利
对于网站业务管理数据库需要的权利:select insert update delete (增删改查 -- CRUD)
Privilege -- 数据库所有权限
Context -- 权限控制的对象
Comment -- 对权限解释说明
Alter | Tables | To alter the table
表 修改表信息(属性信息-结构 字符集 引擎 索引 数据类型)
Create | Databases,Tables,Indexes | To create new databases and tables
库 表 索引 可以拥有创建新库 新表 - 表中索引创建
Create user | Server Admin | To create new users
具有服务管理能力 创建新用户
Delete | Tables | To delete existing rows
表 删除表数据信息权利
Drop | Databases,Tables | To drop databases, tables, and views
库 表 删除数据库 删除表 删除视图???
Index | Tables | To create or drop indexes
表 在表中可以创建或删除索引信息
Insert | Tables | To insert data into tables
表 插入/添加表数据信息权利
Select | Tables | To retrieve rows from table
表 查看表中数据权限
Show databases | Server Admin | To see all databases with SHOW DATABASES
具有服务管理能力 可以查看所有数据库信息
Update | Tables | To update existing rows
表 修改表数据信息权利
Usage | Server Admin | No privileges - allow connect only
具有服务管理能力 数据库服务登录权利(默认权限)
Grant option | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess
库 表 函数 存储过程 可以给别人进行授权的权利
对于网站业务管理数据库需要的权利:select insert update delete (增删改查 -- CRUD)
设置权限
grant priv_type(权限信息) ON 权限管理对象(库 表 -- *.*) to 用户信息(用户名@'白名单信息');
grant Show databases on *.* to xiaoB@'10.0.0.54';
grant Create on *.* to xiaoB@'10.0.0.54';
grant Show databases on *.* to xiaoB@'10.0.0.54';
grant Create on *.* to xiaoB@'10.0.0.54';
三个特殊权限
all privileges 设置所有权限
mysql> create user oldboy@'10.0.0.%' identified by '123';
mysql> grant all on *.* to oldboy@'10.0.0.%';
mysql> grant all on *.* to oldboy@'10.0.0.%';
grant options 设置给别的用户设置权限的权限
grant all on *.* to oldboy@'10.0.0.%' with grant option;
Usage 数据库服务登录权限
查看权限
show grants
show grants for xiaoD@'%';
获取授权表信息
user
全局授权信息 授权对象是所有库所有表
select * from mysql.user where user='test01'\G
db
局部授权信息 授权对象是指定的数据库
tables_priv
局部授权信息 授权对象是指定的数据表
模拟操作
步骤一:准备环境
create database xiaoA;
use xiaoA;
create table t1 (id int);
步骤二:创建用户信息
create user test01@'%' identified by '123';
create user test02@'%' identified by '123';
create user test03@'%' identified by '123';
步骤三:进行用户授权
grant select,insert,update on *.* to test01@'%';
grant select,insert on xiaoA.* to test02@'%';
grant select on xiaoA.t1 to test03@'%';
select * from mysql.user where user='test01'\G
select * from mysql.db where user='test02'\G
select * from mysql.tables_priv where user='test03'\G
create database xiaoA;
use xiaoA;
create table t1 (id int);
步骤二:创建用户信息
create user test01@'%' identified by '123';
create user test02@'%' identified by '123';
create user test03@'%' identified by '123';
步骤三:进行用户授权
grant select,insert,update on *.* to test01@'%';
grant select,insert on xiaoA.* to test02@'%';
grant select on xiaoA.t1 to test03@'%';
select * from mysql.user where user='test01'\G
select * from mysql.db where user='test02'\G
select * from mysql.tables_priv where user='test03'\G
回收权限(设置的什么库什么表就回收对应的)
revoke 回收的权限 on 回收权限对象 (库名.表名) from 用户信息(用户名@白名单)
revoke select,insert on *.* from test1@'%'
mysql> show grants for test01@'%';
+-----------------------------------------------------+
| Grants for test01@% |
+-----------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE ON *.* TO `test01`@`%` |
+-----------------------------------------------------+
1 row in set (0.00 sec)
mysql> revoke insert,update on *.* from test01@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for test01@'%';
+----------------------------------------------+
| Grants for test01@% |
+----------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO `test01`@`%` |
| GRANT INSERT ON `xiaoA`.`t1` TO `test01`@`%` |
+----------------------------------------------+
2 rows in set (0.00 sec)
mysql> revoke insert on xiaoA.t1 from test01@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for test01@'%';
+---------------------------------------------+
| Grants for test01@% |
+---------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO `test01`@`%` |
+---------------------------------------------+
1 row in set (0.00 sec)
+-----------------------------------------------------+
| Grants for test01@% |
+-----------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE ON *.* TO `test01`@`%` |
+-----------------------------------------------------+
1 row in set (0.00 sec)
mysql> revoke insert,update on *.* from test01@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for test01@'%';
+----------------------------------------------+
| Grants for test01@% |
+----------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO `test01`@`%` |
| GRANT INSERT ON `xiaoA`.`t1` TO `test01`@`%` |
+----------------------------------------------+
2 rows in set (0.00 sec)
mysql> revoke insert on xiaoA.t1 from test01@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for test01@'%';
+---------------------------------------------+
| Grants for test01@% |
+---------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO `test01`@`%` |
+---------------------------------------------+
1 row in set (0.00 sec)
数据库远程连接管理(三种)
数据库服务进行本地连接是有局限性--RDS(系统环境)
数据库服务进行本地连接是有局限性--RDS(系统环境)
01 基于MySQL程序的客户端命令
mysql --用于连接数据库
mysqladmin --远程连接管理数据库(设置密码、管理服务运行状态)
mysqldump --远程备份数据库
mysql/mysqladmin/mysqldump -u用户信息 -p密码信息 -h数据库服务地址 -P端口信息
PS:需要部署数据库程序,必须熟悉数据库服务的管理命令
PS:需要部署数据库程序,必须熟悉数据库服务的管理命令
02 基于第三方的数据库远程连接工具
dbeaver -- 官方链接:https://dbeaver.io/ 免费
workbench -- 官方链接: https://www.mysql.com 免费
navicat -- 官方链接:https://www.navicat.com 付费
sqlyog -- 官方链接:https://webyog.com/product/sqlyog/ 付费
workbench -- 官方链接: https://www.mysql.com 免费
navicat -- 官方链接:https://www.navicat.com 付费
sqlyog -- 官方链接:https://webyog.com/product/sqlyog/ 付费
利用sqlyog连接报错,连接失败:
原因:因为连接的数据库服务是MySQL 8.0 最新版本数据库
最新版本数据库密码加密方式变更了
早期版本:密码加密方式-- mysql_native_password -- 密文信息容易被破解(弱口令密码)
最新版本:密码加密方式-- caching_sha2_password
客户端 服务端
连接时--用户名(明文比较) 密码(密文) 用户信息 密码信息(密文)
加密方式--mysql_native_password caching_sha2_password
加密方式--caching_sha2_password mysql_native_password
alter user root@'10.0.0.%' identified with mysql_native_password by '123456';
原因:因为连接的数据库服务是MySQL 8.0 最新版本数据库
最新版本数据库密码加密方式变更了
早期版本:密码加密方式-- mysql_native_password -- 密文信息容易被破解(弱口令密码)
最新版本:密码加密方式-- caching_sha2_password
客户端 服务端
连接时--用户名(明文比较) 密码(密文) 用户信息 密码信息(密文)
加密方式--mysql_native_password caching_sha2_password
加密方式--caching_sha2_password mysql_native_password
alter user root@'10.0.0.%' identified with mysql_native_password by '123456';
03 利用连接驱动程序配合程序语言代码
| 01 | python | 连接数据库驱动-pymysql |
| 02 | golang | 连接数据库驱动-gomysql |
| 03 | java | 连接数据库驱动-jar |
| 04 | php | 连接数据库驱动-phpmysql |
| 02 | golang | 连接数据库驱动-gomysql |
| 03 | java | 连接数据库驱动-jar |
| 04 | php | 连接数据库驱动-phpmysql |
数据库服务配置管理
子主题
收藏
0 条评论
下一页