Last active
September 10, 2020 08:16
-
-
Save XiongJingzhi/e0e59ba4658f278d4b14b6008f2170ef to your computer and use it in GitHub Desktop.
Linux系列
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Centos7使用SSH,禁用密码登录方法: | |
1、 | |
# 若没安装openssh,则yum install openssh-server | |
# 开启sshd, sudo systemctl enable sshd | |
# sudo systemctl start sshd 或者 sudo service sshd start | |
# 开启防火墙的22端口 | |
# sudo firewall-cmd --zone=public --add-port=22/tcp --permanent | |
# sudo service firewalld restart | |
2、 | |
# 编辑/etc/ssh/sshd_config | |
# 将PasswordAuthentication参数值修改为no: PasswordAuthentication no | |
# 重启ssh服务:systemctl restart sshd.service | |
CentOS防火墙: | |
1、firewalld的基本使用 | |
启动: systemctl start firewalld | |
关闭: systemctl stop firewalld | |
查看状态: systemctl status firewalld | |
开机禁用 : systemctl disable firewalld | |
开机启用 : systemctl enable firewalld | |
2、systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。 | |
启动一个服务:systemctl start firewalld.service | |
关闭一个服务:systemctl stop firewalld.service | |
重启一个服务:systemctl restart firewalld.service | |
显示一个服务的状态:systemctl status firewalld.service | |
在开机时启用一个服务:systemctl enable firewalld.service | |
在开机时禁用一个服务:systemctl disable firewalld.service | |
查看服务是否开机启动:systemctl is-enabled firewalld.service | |
查看已启动的服务列表:systemctl list-unit-files|grep enabled | |
查看启动失败的服务列表:systemctl --failed | |
3、配置firewalld-cmd | |
查看版本: firewall-cmd --version | |
查看帮助: firewall-cmd --help | |
显示状态: firewall-cmd --state | |
查看所有打开的端口: firewall-cmd --zone=public --list-ports | |
更新防火墙规则: firewall-cmd --reload | |
查看区域信息: firewall-cmd --get-active-zones | |
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 | |
拒绝所有包:firewall-cmd --panic-on | |
取消拒绝状态: firewall-cmd --panic-off | |
查看是否拒绝: firewall-cmd --query-panic | |
那怎么开启一个端口呢 | |
添加 | |
firewall-cmd --zone=public --add-port=8080-8085/tcp --permanent (--permanent永久生效,没有此参数重启后失效) | |
重新载入 | |
firewall-cmd --reload | |
查看 | |
firewall-cmd --zone=public --query-port=80/tcp | |
删除(是规则,只能删除8080-8085) | |
firewall-cmd --zone=public --remove-port=80/tcp --permanent | |
查看所有打开的端口: | |
firewall-cmd --zone=public --list-ports | |
查看开启的端口和服务: | |
firewall-cmd --permanent --list-services | |
--zone是一套服务方案方案,etc/firewalld里zones目录下,一般pulic是运行ssh和dhcpv6-client | |
1. 最小化安装的Centos7系统并没有nano、vim、wget、curl、ifconfig、lsof命令,这里首先安装一下: | |
yum -y install nano vim wget curl net-tools lsof | |
2. 安装zip压缩命令 | |
yum -y install unzip | |
3. 安装unzip压缩命令 | |
yum -y install unzip | |
4. 使用vi编辑resolv.conf文件 | |
vi /etc/resolv.conf #在最后加入:nameserver 8.8.8.8 | |
5.编辑文件/etc/resolv.conf | |
echo “nameserver 8.8.8.8” >>/etc/resolv.conf | |
安装【zsh】 | |
yum install -y zsh | |
chsh -s /bin/zsh | |
安装【oh my zsh】 | |
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh | |
安装supervisor | |
yum install -y supervisor | |
systemctl enable supervisord # 开机自启动 | |
systemctl start supervisord # 启动supervisord服务 | |
# systemctl start supervisord # 查看supervisord服务状态 | |
# ps -ef|grep supervisord # 查看是否存在supervisord进程 | |
supervisord -c /etc/supervisord.conf | |
在supervisor.conf里最后一句 | |
[include] | |
files = supervisord.d/*.ini | |
因此,可以在supervisord.d/*.ini,增加配置 | |
为了高内聚,在项目新建配置 | |
ln -s /var/www/bbs/bbs.conf /etc/supervisord.d/bs.ini | |
编辑文件如下: | |
[program:DeployLinux] #DeployLinux 为程序的名称 | |
command=dotnet DeployLinux.dll #需要执行的命令 | |
directory=/home/publish #命令执行的目录 | |
environment=ASPNETCORE__ENVIRONMENT=Production #环境变量 | |
user=root #用户 | |
stopsignal=INT | |
autostart=true #是否自启动 | |
autorestart=true #是否自动重启 | |
startsecs=3 #自动重启时间间隔(s) | |
stderr_logfile=/var/log/ossoffical.err.log #错误日志文件 | |
stdout_logfile=/var/log/ossoffical.out.log #输出日志文件 | |
完成之后可以supervisorctl reload, 重载程序 | |
安装nginx | |
rpm -ql nginx 可以知道安装nginx安装的位置 | |
编辑/etc/yum.repo.d/nginx.repo | |
[nginx] | |
name=nginx repo | |
baseurl=http://nginx.org/packages/centos/7/$basearch/ | |
gpgcheck=0 | |
enabled=1 | |
yum install nginx | |
安装Redis | |
1、yum install redis --查看是否有redis yum 源 | |
2、yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm | |
3、 yum --enablerepo=remi install redis -- 安装redis数据库 | |
4、service redis start Redirecting to /bin/systemctl start redis.service --开启redis服务 | |
redis-server /etc/redis.conf --开启方式二 | |
5、ps -ef | grep redis -- 查看redis是否开启 | |
6、redis-cli -- 进入redis服务 | |
7、redis-cli shutdown --关闭服务 | |
8、开放端口6379、6380的防火墙 | |
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT 开启6379 | |
/sbin/iptables -I INPUT -p tcp --dport 6380 -j ACCEPT 开启6380 | |
/etc/rc.d/init.d/iptables save 保存 | |
9、使用redis desktop manager连接redis | |
安装mangoBD | |
/etc/yum.repos.d/mongodb-org-4.0.repo | |
[mongodb-org-4.0] | |
name=MongoDB Repository | |
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/ | |
gpgcheck=1 | |
enabled=1 | |
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc | |
yum install mongodb-org | |
centos查看包 | |
rpm -qa |grep mongodb --可以通过软件名称查看具体的软件包 | |
rpm -ql mongodb-org-server |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
系统配置 | |
程序安装 | |
PATH | |
命令 | |
参数 | |
权限 | |
用户 | |
用户组 | |
常用操作 | |
pwd | |
print working dir | |
显示现在所处的目录 | |
ls | |
不带参数就显示当前目录下的所有文件 | |
程序可以加参数 | |
-l 显示详细信息 | |
-h 人性化显示文件尺寸 | |
-a 显示所有文件, 以 . 开头的文件是隐藏文件 | |
还可以带一个目录当参数,这样就会显示这个目录 | |
下面两个是等价的 | |
ls -l -h | |
ls -lh | |
cd | |
cd Desktop | |
改变当前目录 | |
. 代表当前目录 | |
.. 代表上级目录 | |
cd 不带参数就回到默认的家目录 | |
每个用户都有一个家目录,默认在 /home/用户名 | |
root 用户的家目录是 /root | |
cp | |
复制出一个文件,用法如下 | |
cp a.txt b.txt | |
复制 a.txt 并把新文件取名为 b.txt | |
复制目录要加上 -r 参数 | |
cp -r a b | |
mkdir | |
创建一个目录 | |
-p 可以一次性创建多层目录 | |
mkdir -p a/b/c | |
rmdir | |
只能用来删除一个空目录 | |
rm | |
这个命令直接删除东西,很危险,一般不要用 | |
删除文件或者目录 | |
-f 强制删除 | |
-r 用来删除目录 | |
mv | |
移动文件或者文件夹 | |
也可以用来改名 | |
mv a.txt b.txt | |
mv b.txt ../ | |
mv b.txt ../gua.txt | |
可以用 mv xx /tmp 的方式来将文件放入临时文件夹 | |
(/tmp是操作系统提供的临时文件夹,重启会删除里面的所有文件) | |
cat | |
显示文件内容 | |
tac | |
反过来显示文件内容 | |
nl | |
显示内容并附带行号 | |
more less head tail | |
more 可以分屏分批看文件内容 | |
less 比 more 更高级,可以前后退看文件 | |
head 可以显示文件的前 10 行 | |
tail 可以显示文件的后 10 行 | |
head 和 tail 有一个 -n 参数 | |
head -n 20 a.gua | |
touch | |
touch a.gua | |
如果 a.gua 存在就更新修改时间 | |
如果 a.gua 不存在就创建文件 | |
目录分布 | |
权限操作 | |
sudo | |
用管理员帐户执行程序 | |
比如安装程序或者修改一些系统配置都需要管理员权限 | |
su | |
switch user, 切换用户 | |
su gua | |
su root | |
-(常规文件)、d(目录)、l(符号链接)、c(字符特殊设备)、b(模块特殊设备)、p(FIFO)、s(套接字) | |
文件权限 文件类型 用户 用户组 文件大小 修改日期 文件名 | |
-rw-rw-r-- 1 gua gua 10 11/09 20:28 b.gua | |
drwxrwxr-x 2 gua gua 4096 11/09 20:28 tmp | |
文件类型 是否可读 是否可写 是否可执行 | |
d r w x | |
- r w x | |
三组 rwx 分表代表 所属用户|同组用户|其他用户 | |
rwx 可以用数字表示为 421 | |
于是乎 | |
r-- 就是 4 | |
rw- 就是 6 | |
rwx 就是 7 | |
r-x 就是 5 | |
chown (change own) | |
改变文件的用户 | |
chown gua c.gua | |
chown gua:gua c.gua | |
chmod (change mode) | |
改变文件权限 | |
chmod 666 root.gua | |
chmod +x root.gua | |
chmod -x tmp | |
adduser username (default add group) | |
按提示输入密码 | |
信息查找 | |
file | |
显示文件的类型(不是百分之百准确) | |
uname | |
显示操作系统的名字或者其他信息 | |
uname -r | |
uname -a | |
which | |
which pwd | |
显示 pwd 的具体路径 | |
whereis | |
whereis ls | |
显示更全面的信息 | |
whoami | |
find . -name "" | |
-type f | |
ls -l | grep "^-" | wc -l | |
统计文件数量 | |
ls -l | grep "^d" | wc -l | |
统计文件夹数量 | |
find -type d|xargs chmod 745 // 只修改文件夹权限 | |
find -type f|xargs chmod 644 // 只修改文件权限 | |
奇怪符号 | |
~ 家目录快捷方式 | |
> 覆盖式重定向 | |
>> 追加重定向 | |
| 管道, 很麻烦 以后说 | |
`` 获取命令执行的结果 | |
& 后台执行 | |
python3 server.py & | |
可以用 fg 命令把一个在后台的程序拉到前台来 | |
可以用 Ctrl-z 来把一个前台的程序放到后台去挂起 | |
() 开新的子进程shell执行(不用掌握这一条, 因为几乎没人用) | |
命令配置符 | |
\# 代表超级用户 | |
$ 代表普通用户 | |
nohup | |
no hang up(不挂起, 后台跑) | |
nohup command >out.file 2>&1 & | |
“1”表示文件描述符 1,表示标准输出,“2”表示文件描述符 2,意思是标准错误输出,“2>&1”表示标准输出和错误输出合并了 | |
command > file 将输出重定向到 file。 | |
command < file 将输入重定向到 file。 | |
command >> file 将输出以追加的方式重定向到 file。 | |
n > file 将文件描述符为 n 的文件重定向到 file。 | |
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。 | |
n >& m 将输出文件 m 和 n 合并。 | |
n <& m 将输入文件 m 和 n 合并。 | |
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 | |
history | |
查看历史命令 | |
grep | |
查找 | |
这两个一般配合使用 | |
history | grep touch | |
xargs | |
传递参数的一个过滤器,也是组合多个命令的一个工具 | |
cat test.txt | xargs -n3 | |
top | |
任务管理器 | |
ps | |
查看进程, 一般用下面的用法 | |
ps ax | |
ps ax | grep python | |
查看带 python 字符串的进程 | |
kill 和 killall 杀进程 | |
用 ps ax 找到进程id (pid) | |
kill [pid] | |
kill -9 [pid] | |
kill -15 [pid] | |
killall 是用进程名字来杀进程 | |
后台前台 | |
fg | |
jobs | |
查看端口 | |
netstat -ap | grep 6301 | |
快捷键 | |
C-z 挂起到后台 | |
C-c 中断程序 | |
service application restart/stop/start | |
服务 重启、停止, 权限大 | |
reboot | |
重启 | |
shutdown | |
关机 | |
可以用参数指定时间 | |
halt | |
关机 | |
passwd username | |
修改密码 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
安装,并启动 | |
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ | |
1. apt install mongodb-org | |
2. pgrep mongo -l // 查看进程是否已经启动 | |
3. mongo // 此时可进入数据库 | |
手动启动 | |
1. locate mongo // 查看mongo安装位置 | |
2. 可查看到mongod(数据库),mongo(数据日志) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apt update | |
apt install mariadb-server | |
mysql_secure_installation | |
enter, 输入root密码,移除测试用户,允许root远程登录,删掉测试数据库test,重新加载权限表 | |
systemctl status mysql 查看mysql状态 | |
systemctl start mysql, 开启 | |
update-rc.d mysql defaults, 随开启默认启动 | |
mysql 登陆mysql, mysql -u root -p | |
GRANT ALL PRIVILEGES ON *.* TO 'root'@'*.%' IDENTIFIED BY 'my-new-password' WITH GRANT OPTION; | |
grant all on *.* to 'XF用户名'@'%(全部ip)' identified by 'aa123456123(设置密码)' with grant option; | |
FLUSH PRIVILEGES; | |
select User, host from mysql.user; // 此时有XF用户,host为% | |
nano /etc/mysql/mariadb.conf.d/50-server.cnf 注销 bind-address = 127.0.0.1 | |
systemctl restart mysql | |
ufw allow 3306 | |
update-rc.d mysql defaults | |
新建数据库,一般包含中文字符集选utf-8,utf8mb4(imoji), 排序大小写不敏感,utf8_general_ci(case insensitive) | |
命令格式:grant privilegesCode on dbName.tableName to username@host identified by "password"; | |
grant all privileges on zhangsanDb.* to zhangsan@'%' identified by 'zhangsan'; | |
flush privileges; | |
show grants for 'zhangsan'; | |
privilege type: all privileges, select, delete, update, create, drop; | |
dbName.tableName表示授予权限的具体库或表,常用的有以下几种选项: | |
.:授予该数据库服务器所有数据库的权限。 | |
dbName.*:授予dbName数据库所有表的权限。 | |
dbName.dbTable:授予数据库dbName中dbTable表的权限。 | |
username@host表示授予的用户以及允许该用户登录的IP地址。其中Host有以下几种类型: | |
localhost:只允许该用户在本地登录,不能远程登录。 | |
%:允许在除本机之外的任何一台机器远程登录。 | |
192.168.52.32:具体的IP表示只允许该用户从特定IP登录 | |
password指定该用户登录时的面 | |
flush privileges表示刷新权限变更 | |
修改密码 | |
update mysql.user set password = password('zhangsannew') where user = 'zhangsan' and host = '%'; | |
flush privileges; | |
删除用户 | |
drop user zhangsan@'%'; | |
常用命令组 | |
create user zhangsan identified by 'zhangsan'; | |
grant all privileges on zhangsanDb.* to zhangsan@'%' identified by 'zhangsan'; | |
flush privileges; | |
创建了用户zhangsan,并将数据库zhangsanDB的所有权限授予zhangsan。如果要使zhangsan可以从本机登录,那么可以多赋予localhost权限: | |
grant all privileges on zhangsanDb.* to zhangsan@'localhost' identified by 'zhangsan'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//home 目录 | |
git clone https://github.com/pyenv/pyenv.git ~/.pyenv | |
git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv | |
//加入到shell配置 | |
export PYENV_ROOT="$HOME/.pyenv" | |
export PATH=$PYENV_ROOT/shims:$PATH | |
eval "$(pyenv init -)" | |
eval "$(pyenv virtualenv-init -)" | |
//全局 | |
# 查看当前版本 | |
pyenv version | |
# 查看所有版本 | |
pyenv versions | |
# 查看所有可安装的版本 | |
pyenv install --list | |
# 安装指定版本 | |
pyenv install 3.6.5 | |
# 安装新版本后rehash一下 | |
pyenv rehash | |
# 删除指定版本 | |
pyenv uninstall 3.5.2 | |
# 指定全局版本 | |
pyenv global 3.6.5 | |
# 指定多个全局版本, 3版本优先 | |
pyenv global 3.6.5 2.7.14 | |
# 实际上当你切换版本后, 相应的pip和包仓库都是会自动切换过去的 | |
// 虚拟环境 | |
# 创建一个3.6.5版本的虚拟环境, 命名为v365env, 然后激活虚拟环境 | |
$ pyenv virtualenv 3.6.5 v365env | |
$ pyenv activate v365env | |
# 关闭虚拟环境 | |
$ pyenv deactivate v365env |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## CREATE | |
1. create table | |
``` sql | |
DROP TABLE IF EXISTS `user`; | |
CREATE TABLE `user` ( | |
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '索引', | |
`name` VARCHAR(255) DEFAULT NULL COMMENT '名字', | |
`gender` TINYINT(4) NOT NULL DEFAULT 0 COMMENT '0: 未知; 1: 男性; 2: 女性', | |
`point` DECIMAL(10, 2) DEFAULT NULL COMMENT '积分', | |
`icon` VARCHAR(500) DEFAULT NULL, | |
`is_deleted` TINYINT(4) NOT NULL DEFAULT 0 COMMENT '0: 未删除; 1: 已删除', | |
`created_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | |
`updated_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', | |
PRIMARY KEY (`id`) | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; | |
DROP TABLE IF EXISTS `order`; | |
CREATE TABLE `order` ( | |
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '索引', | |
`user_id` BIGINT(20) NOT NULL COMMENT '用户id', | |
`point` DECIMAL(10, 2) DEFAULT NULL COMMENT '积分', | |
PRIMARY KEY (`id`) | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单表'; | |
-- 快照 | |
CREATE TABLE user_snapshot SELECT * FROM `user` WHERE id = 1; | |
-- show | |
SHOW CREATE TABLE user; | |
-- primary key A primary key is a field in a table which uniquely identifies each row/record in a database table. | |
-- 一般用与业务无关的id (uuid不常见)作为主键,联合主键不太常见 | |
-- foreign key | |
-- 阿里JAVA规范【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 | |
ALTER TABLE `order` | |
ADD CONSTRAINT fk_user_id | |
FOREIGN KEY (user_id) | |
REFERENCES `user` (id); | |
ALTER TABLE `order` | |
DROP FOREIGN KEY fk_user_id; | |
-- many to many 多对对,通过中间表定义 | |
-- index 索引目录 B树,UNIQUE 在业务层, KEY 普通索引 MUL multiple | |
CREATE TABLE `account` ( | |
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id', | |
`account_id` BIGINT(20) NOT NULL DEFAULT 0 COMMENT '账户id', | |
`user_id` BIGINT(20) NOT NULL COMMENT '用户id', | |
`banlance` DECIMAL(10, 2) DEFAULT 0 COMMENT '余额', | |
PRIMARY KEY (`id`), | |
UNIQUE KEY `uk_account_id` (`account_id`), | |
KEY `ix_banlance` (`banlance`) | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='账户表'; | |
-- WHERE 条件使用 index column 作为条件 | |
``` | |
2. CREATE row data | |
``` sql | |
INSERT INTO `user` (id, name, gender, point, icon, create_time, is_deleted) VALUES (1, '张1', 1, 10, NUll, 0, NULL); | |
INSERT INTO `user` (name, gender, point, create_time) VALUES ('张2', 2, 11, '2020-01-01 13:27:21'); | |
INSERT INTO `user` (name, point, gender, create_time) VALUES ('张3', 0, 1, '2020-02-01 13:27:21'), ('张3', 10.23, 1, '2020-02-01 13:27:21'); | |
``` | |
## QUERY Retrieve | |
1. query data | |
``` sql | |
-- basic | |
SELECT 列名 (或者*,表示所有列) FROM 表名 WHERE 筛选条件; | |
SELECT name, gender, create_time FROM `user` WHERE id >= 2; | |
-- in | |
SELECT name, gender FROM `user` WHERE id IN (1, 2); | |
-- and | |
SELECT * FROM `user` WHERE create_time >= '2020-01-01 00:00:00' AND create_time < '2020-06-01 00:00:00'; | |
-- or | |
SELECT * FROM `user` WHERE create_time >= '2020-01-01 00:00:00' OR id = 1; | |
-- NOT <> | |
SELECT * FROM `user` WHERE id <> 2; | |
-- order desc asc | |
SELECT name, gender FROM `user` WHERE id >= 2 ORDER BY create_time DESC; | |
-- limit | |
SELECT name, gender FROM `user` WHERE id >= 2 ORDER BY create_time DESC LIMIT 2; | |
-- offset | |
SELECT id, name, gender FROM `user` ORDER BY create_time DESC LIMIT 1 OFFSET 1; | |
-- multiple conditions | |
SELECT * FROM `user` | |
WHERE create_time >= '2020-01-01 00:00:00' | |
ORDER BY create_time, update_time DESC; | |
-- aggregate function COUNT, SUM, AVG, MIN, MAX | |
-- COUNT 不统计NULL, 去重需用DISTINCT | |
SELECT COUNT(*) FROM `user`; | |
SELECT COUNT(id) FROM `user`; | |
SELECT COUNT(icon) FROM `user`; | |
SELECT COUNT(DISTINCT name) FROM `user`; | |
-- SUM | |
SELECT id, point, SUM(point) FROM `user` | |
WHERE id >= 2; | |
-- AVERAGE | |
SELECT AVG(point) FROM `user`; | |
-- GROUP order WHERE > GROUP > | |
SELECT id, point, AVG(point) FROM `user` | |
WHERE id >=2 | |
GROUP BY id; | |
-- HAVING aggregate funciton | |
SELECT id, point, AVG(point) FROM `user` | |
WHERE id >=2 | |
GROUP BY id | |
HAVING AVG(point) >= 10; | |
-- multiple table query, 一般不用 | |
-- column number = sum of two columns numbre | |
-- 以前一张表每行和后一张全部行组成新的行 行数为 n * m | |
-- JOIN, INNER JOIN | |
SELECT u.name, u.gender, a.banlance FROM `account` a | |
INNER JOIN `user` u | |
ON a.user_id = u.id; | |
-- RIGHT JOIN, LEFT JOIN, FULL OUTER JOIN | |
-- INNER JOIN 两张表都存在, RIGHT 右表存在, LEFT 左表, 剩余用NULL填充 | |
``` | |
## UPDATE | |
``` sql | |
-- INSERT | |
INSERT INTO 表名 (字段1, 字段2...) VALUES (值1, 值2...), ...; | |
-- UPDATE | |
UPDATE `user` | |
SET name = '球球' | |
WHERE id = 1; | |
-- DELETE | |
DELETE FROM `user` WHERE id = 2; | |
-- REPLACE or INSERT | |
REPLACE INTO `user` (id, name, gender, point) VALUES (1, '小明', 1, 12.22); | |
-- INSERT or IGNORE | |
INSERT IGNORE INTO `user` (id, name, gender, point) VALUES (1, 'xx', 1, 233); | |
-- INSERT or UPDATE | |
INSERT INTO `user` (id, name, gender, point) VALUES (1, 'xxx', 1, 123.33) ON DUPLICATE KEY UPDATE name = '谢谢', gender = 2, point = 233.33; | |
``` | |
## MySQL Client | |
``` | |
SHOW DATABASES; | |
CREATE DATABASE test; | |
DROP DATABASE test; | |
USE test; | |
SHOW TABLES; | |
DESC user; | |
SHOW CREATE TABLE user; | |
CREATE TABLE user; | |
ALTER TABLE user ADD COLUMN name VARCHAR(20) NOT NULL; | |
ALTER TABLE user DROP COLUMN name; | |
EXIT; | |
``` | |
## Transaction 事务 | |
1. Atomic 原子性,事务中所有SQL语句,要么全部执行,要么全不执行 | |
2. Consistent 一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100; | |
3. Isolation 隔离性,如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离 | |
4. Duration 持久性,事务完成后,对数据库数据的修改被持久化存储。 | |
``` sql | |
-- 显式事务 | |
BEGIN | |
UPDATE accounts SET balance = balance - 100 WHERE id = 1; | |
UPDATE accounts SET balance = balance + 100 WHERE id = 2; | |
-- 正常情况,全部成功执行 | |
COMMIT | |
-- 异常情况,则回滚 | |
ROLLBACK | |
``` | |
### isolation level | |
1. read uncommit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# === | |
# 生成 ssh-key | |
# === | |
# Mac 用户直接打开终端输入命令 | |
# Win 用户安装 Github Desktop 离线包后, 打开桌面的 git shell 程序, 在里面输入下面的命令 | |
# | |
# 1. 在本机生成 ssh key 公钥私钥 | |
# 注意 下面的 mykey 随便换一个你喜欢的名字, 这是一个标注, 方便你看的 | |
ssh-keygen -C mykey | |
# 会提示你生成的文件的地址, 并且让你输入密码, 你不要输入密码, 直接回车 | |
# | |
# 这样你就得到了一对 ssh-key, 这是用于登录服务器用的 | |
# 默认你会得到两个文件 | |
# id_rsa 是私钥 自己保存 不要给别人看 | |
# id_rsa.pub 是公钥, 是要到处使用的 | |
# === | |
# 重建服务器并且配置 ssh-key | |
# === | |
# | |
# 去 vultr 的管理界面 | |
# 先删除(Destory)现有的服务器 | |
# 新建服务器的时候, 把刚才才生成的 id_rsa.pub 文件(用 atom/pycharm 可以打开)里面的内容加入到 ssh-key 步骤中 | |
# 这样你就可以不用密码, 自动登录服务器了(windows 用户请看「windows上用bitvise软件使用sshkey登录.pdf」这个文件) | |
# 如果你不想重建服务器, 配置 ssh-key 的方法如下 | |
# 在服务器把本机生成的 public key 添加到 /root/.ssh/authorized_keys 文件中 | |
# 1 用 root 用户登录到服务器, 创建 .ssh 目录 | |
cd /root | |
mkdir .ssh | |
# 2 编辑 authorized_keys 文件, 把刚才生成的 id_rsa.pub 文件里面的内容粘贴进去并保存退出 | |
# 注意, 这里可以粘贴多个 key, 一行一个 | |
nano .ssh/authorized_keys | |
# 在本机上可用git bash尝试 | |
# ssh root@ipaddress||domain | |
# 注意 Are you sure you want to continue connecting (yes/no)? | |
# 要回答 yes | |
# 本机使用Bitvise, 点击Client key manager | |
# import, 点击all文件,找到id_rsa私钥,导入后关闭 | |
# initial method: publickey 选择刚刚生成的文件 | |
# 登录成功 | |
# Ubuntu禁用密码登陆 | |
# nano /etc/ssh/sshd_config | |
# Change to no to disable tunnelled clear text passwords | |
PasswordAuthentication no | |
# === | |
# 服务器初始化配置, 复制这些命令粘贴到服务器终端中执行 | |
# === | |
# | |
# 安装 配置 打开 ufw 防火墙 | |
apt-get install ufw | |
ufw allow 22 | |
ufw allow 80 | |
ufw allow 443 | |
ufw default deny incoming | |
ufw default allow outgoing | |
ufw status verbose | |
ufw enable | |
# 安装必备软件 | |
apt-get install git python3 python3-pip python3-setuptools supervisor mongodb redis-server zsh | |
# 安装 oh-my-zsh 配置(方便你使用命令行的配置) | |
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh | |
# 安装 gunicorn | |
pip3 install gunicorn pymongo | |
# === | |
# 服务器中文编码问题 | |
# === | |
# | |
# 编辑下面的文件, 不要拼错 | |
nano /etc/environment | |
# 加入下面的内容, 保存退出 | |
LC_CTYPE="en_US.UTF-8" | |
LC_ALL="en_US.UTF-8" | |
=== | |
gunicorn wsgi --bind 0.0.0.0:2000 | |
=== | |
#!/usr/bin/env python3 | |
这是把代码部署到 apache gunicorn nginx 后面的套路 | |
➜ ~ cat /etc/supervisor/conf.d/xx.conf | |
supervisor监护程序,重启、崩溃后自动重启 | |
[program:todo] | |
command=/usr/local/bin/gunicorn wsgi --bind 0.0.0.0:2000 --pid /tmp/todo.pid | |
directory=/root/web13 | |
autostart=true | |
可以使用 | |
supervisorctl restart todo | |
安装nginx | |
apt-get install nginx | |
service start nginx | |
systemctl stop nginx.service | |
虚拟机配置在sites-enabled里 | |
ln -s /var/www/bbs/bbs.nginx /etc/nginx/sites-enabled/bbs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1、从服务器上下载文件 | |
scp username@servername:/path/filename /var/www/local_dir(本地目录) | |
例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录) | |
2、上传本地文件到服务器 | |
scp /path/filename username@servername:/path | |
例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中 | |
3、从服务器下载整个目录 | |
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录) | |
例如:scp -r root@192.168.0.101:/var/www/test /var/www/ | |
4、上传目录到服务器 | |
scp -r local_dir username@servername:remote_dir | |
例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1.开通root用户 | |
sudo passwd root | |
sudo nano /etc/ssh/sshd_cofig | |
修改PermitRootLogin yes | |
2. 禁用ubuntu用户 | |
su root | |
nano /root/.ssh/authorized_keys | |
nano /etc/passwd | |
//找到ubuntu用户 在该行的最后面加上/nologin |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment