很久没有写过了,这回重新的把服务器重装系统了,本次不安装lamp环境包,不配做tomcat,也不用宝塔管理面板,就是简简单单的使用iptables防火墙和apache的httpd安装一个服务器环境,其实现在大部分都是使用它来做内部端口映射,我本人不是专做运维的,只懂一点点。感觉各种http服务器折腾下来就这个直接了当。本次也不安装mysql,装在一个主机上没有意义,感觉。而且我的vps太low了。
不管怎么样先更新一下再说。
yum update
service iptables status
yum install -y iptables
yum install iptables-services
# 如果需要安装就需要禁用原来的,我本次安装版本自带
# 停止firewalld服务
systemctl stop firewalld
# 禁用firewalld服务
systemctl mask firewalld
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
#如果要添加内网ip信任(接受其所有TCP请求)
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP
#保存上述规则
service iptables save
#注册iptables服务
#相当于以前的chkconfig iptables on
systemctl enable iptables.service
#开启服务
systemctl start iptables.service
#查看状态
systemctl status iptables.service
简易脚本
#!/bin/sh
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
systemctl restart iptables.service
yum install -y httpd
yum install -y httpd-devel
# 启动和设置开机启动
systemctl start httpd
systemctl enable httpd
# 查看状态
systemctl status httpd
这个时候在你的浏览器上输入你的服务器IP地址就能看到这个了
添加mysql源
1 |
|
安装mysql
1 |
|
启动mysql并设置为开机自启动服务
1 2 |
|
检查mysql服务状态
1 |
|
第一次启动mysql,会在日志文件中生成root用户的一个随机密码,使用下面命令查看该密码
1 |
|
修改root用户密码
1 2 3 4 |
|
查看当前已有用户
select host,user,authentication_string from mysql.user;
新建用户
格式:create user "username"@"host" identified by "password";
create user 'test'@'localhost' identified by '123';
create user 'test'@'192.168.7.22' identified by '123';
create user 'test'@'%' identified by '123';
/*host="localhost"为本地登录用户,host="ip"为ip地址登录,host="%",为外网ip登录*/
删除用户
格式:drop user 'username'@'host';
授权给用户
格式:grant privileges on databasename.tablename to 'username'@'host' IDENTIFIED BY 'PASSWORD';
1. GRANT命令说明:
priveleges(权限列表),可以是all priveleges, 表示所有权限,也可以是select、update等权限,多个权限的名词,相互之间用逗号分开。
on用来指定权限针对哪些库和表。
*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。
to 表示将权限赋予某个用户, 如 jack@'localhost' 表示jack用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是 在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。
identified by指定用户的登录密码,该项可以省略。
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。
备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个select权限,然后又给用户添加一个insert权限,那么该用户就同时拥有了select和insert权限。
2.授权原则说明:
权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:
a、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
b、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
c、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。
d、为每个用户设置满足密码复杂度的密码。
e、定期清理不需要的用户。回收权限或者删除用户。
/*授予用户通过外网IP对于该数据库的全部权限*/
grant all privileges on `test`.* to 'test'@'%' ;
/*授予用户在本地服务器对该数据库的全部权限*/
grant all privileges on `test`.* to 'test'@'localhost';
grant select on test.* to 'user1'@'localhost'; /*给予查询权限*/
grant insert on test.* to 'user1'@'localhost'; /*添加插入权限*/
grant delete on test.* to 'user1'@'localhost'; /*添加删除权限*/
grant update on test.* to 'user1'@'localhost'; /*添加权限*/
flush privileges; /*刷新权限*/
查看当前已有权限
show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
rows in set (0.00 sec)
其它
(7)删除权限
revoke privileges on databasename.tablename from 'username'@'host';
revoke delete on test.* from 'jack'@'localhost';
(8)更改用户名
mysql> rename user 'jack'@'%' to 'jim'@'%';
(9)修改密码
1.用set password命令
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
Query OK, 0 rows affected (0.00 sec)
2.用mysqladmin [root@rhel5 ~]# mysqladmin -uroot -p123456 password 1234abcd
备注: 格式:mysqladmin -u用户名 -p旧密码 password 新密码
3.用update直接编辑user表
(10)pycharm中python3.6+pymysql+mysql8.0.1连接报错
pymysql.err.OperationalError: (1045, u"Access denied for user 'root'@'localhost' (using password: No)")
解决方法:
在cmd命令行连接mysql, 通过mysql -u root -p dong1990
然后输入ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'dong1990';
数据库操作
一、创建数据库(默认字符集和排序规则)
(1)创建数据库
CREATE DATABASE my_db1;
Query OK, 1 row affected (0.00 sec)
(2)因为my_db1已经存在,再次创建会报错
CREATE DATABASE my_db1;
ERROR 1007 (HY000): Can't create database 'my_db1'; database exists
(4)加上IF NOT EXISTS就算数据库已经存在,把原来的覆盖掉了
CREATE DATABASE IF NOT EXISTS my_db1;
Query OK, 1 row affected, 1 warning (0.00 sec)
二、创建数据库包含字符集和排序规则
(1)查看mysql字符集
[sql] view plain copy
(2)查看mysql排序规则
[sql] view plain copy
(3)创建数据库包括字符集和排序规则
[sql] view plain copy
三、删除数据库
[sql] view plain copy
域名是得要有的
# 扩展库
yum install epel-release
# 更新
yum update
# 安装
yum install httpd mod_ssl python-certbot-apache
添加虚拟主机 Apache vhost
我使用的域名是 deepppixel.com,域名要添加解析哦。
我创建的是基于域名的虚拟主机,就是多个域名指向同一个服务器地址。
还有两种方式是:基于 IP 地址 和基于端口。
先创建保存虚拟主机配置的文件夹
// 虚拟主机的配置文件
[root@~]# mkdir -p /etc/httpd/conf/vhost
然后创建域名网站的内容文件夹
// 使用域名方便以后添加新的域名,不会产生冲突,不要随意命名,你会后悔的
[root@~]# mkdir -p /var/www/deepppixel.com
添加域名的 log 日志文件
[root@~]# touch /etc/httpd/logs/deepppixel.com-error_log
[root@~]# touch /etc/httpd/logs/deepppixel.com-access_log
把上面创建的虚拟主机路径添加到 Apache 的配置文件中
[root@~]# vim /etc/httpd/conf/httpd.conf
......
# vhost
Include conf/vhost/*.conf
开始添加虚拟主机文件
[root@~]# vim /etc/httpd/conf/vhost/deepppixel.com.conf
ServerName deepppixel.com
ServerAlias deepppixel.com *.deepppixel.com
DocumentRoot "/www/deepppixel.com"
ErrorLog "/logs/deepppixel.com-error_log"
CustomLog "/logs/deepppixel.com-access_log"
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
检查 httpd.conf 是否有错
[root@~]# httpd -t
// 没有找到文件夹
AH00112: Warning: DocumentRoot [/www/deepppixel.com] does not exist
// CustomLog 后面需要跟 两个或三个参数
AH00526: Syntax error on line 7 of /etc/httpd/conf/vhost/deepppixel.com.conf:
CustomLog takes two or three arguments, a file name, a custom log format string or format name, and an optional "env=" or "expr=" clause (see docs)
出现了两个错误,修改如下
ServerName deepppixel.com
ServerAlias deepppixel.com *.deepppixel.com
DocumentRoot "/var/www/deepppixel.com"
ErrorLog "logs/deepppixel.com-error_log"
CustomLog "logs/deepppixel.com-access_log" "%h %l %u %t \"%r\" %>s %b"
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
重新检查即可
[root@~]# httpd -t
Syntax OK
重启 Apache 服务器
[root@~]# systemctl restart httpd.service
首先使用curl下载get-pip文件
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
使用Python来运行
python get-pip.py
安装完毕
方案一、更改库的默认字符集
创建库的时候指定默认字符集:
create database 库名 default charset=utf8;
1
或者修改现有库的字符集:
alter database 库名 character set utf8;
1
方案二、更改表的默认字符集,
创建表的时候指定默认字符集
create table 表名 (...) default charset=utf8;
1
或者修改现有表的字符集
alter table 表名 character set utf8;
1
方案三、修改配置文件(新创建的库和表会自动设置中文字符集)
修改配置文件详细步骤: (注意:为了防止把配置文件改错,修改之前先将其备份)
# 获取用户权限:
sudo -i
# 进入到mysql配置文件所在路径:
cd /etc/mysql/mysql.conf.d/
1
2
3
4
# 备份(-p选项会把原文件的权限也一起复制)
cp -p mysql.cnf mysql.cnf.bak #用vi打开配置文件mysqld.cnf并进行修改:
1
2
输入vi mysqld.cnf
找到 [mysqld],在 tmpdir =/tmp 后面按o键换行插入 character_set_server=utf8(如图所示):
按esc键 退出插入模式,按shift + : 进入命令行,输入wq保存并退出
输入 /etc/init.d/mysql restart 重启mysql服务
输入exit 退出超级用户模式