MySQL导出导入

导出整个数据库:

mysqldump -h [host] -P [port] -u [user] -p [dbname] > [dbfile].sql

导出数据库结构(没有数据)

mysqldump -h [host] -P [port] -u [user] -p -d [dbname] > [dbfile].sql

导出一张表

mysqldump -h [host] -P [port] -u [user] -p [dbname] [tablename1] [tablename2] > [db_tablefile].sql

导出一张表结构

mysqldump -h [host] -P [port] -u [user] -p -d [dbname] [tablename1] [tablename2] > [db_tablefile].sql

删除数据库:

DROP DATABASE IF EXISTS [dbname];

创建数据库

CREATE DATABASE [dbname] DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

CHARACTER SET可以用utf8或者utf8mb4,后者是标准4字节utf8,支持emoji。建议使用后者。

对应的COLLATE可以使用utf8_general_ci或者utf8_bin(对应的utf8mb4_general_ci和utf8mb4_bin),其中general_ci不区分字段内容大小写,bin区分。建议使用前者,在创建密码表的时候可以对表单独设置COLLATE。

导入数据库

SOURCE [path]/[dbname].sql

在实际使用过程中,默认导出的数据库文件会很大,我们可以在导出的过程中进行压缩,这里采用主流的gzip和xz对备份文件进行压缩。

mysqldump -h [host] -P [port] -u [user] -p [dbname] | gzip > [dbfile].sql.gz
mysqldump -h [host] -P [port] -u [user] -p [dbname] | xz > [dbfile].sql.xz

相对应的导入

gzip -dc < [dbfile].sql.gz | mysql -h [host] -u [user] -P [port] -p [dbname]
xz -dc < [dbfile].sql.xz | mysql -h [host] -u [user] -P [port] -p [dbname]

发表在 数据库 | 标签为 | 留下评论

搭建WEB服务器

操作系统的源自带 nginx 和 apache httpd,但都不是最新版本。

先安装几个源:

IUS 第三方综合软件扩展,在 https://ius.io/GettingStarted/ 找到系统对应的地址

rpm -Uvh https://centos7.iuscommunity.org/ius-release.rpm

Nginx官方源,在 http://nginx.org/en/linux_packages.html 按照说明手动编辑源repo文件,或者在 http://nginx.org/packages/centos/ 按照目录结构找到对应的地址

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装 Apache Httpd

yum install httpd24u

安装完成后,系统服务名为httpd

# 启动httpd
systemctl start httpd
# 随系统启动httpd
systemctl enable httpd

配置文件在 /etc/httpd 下面

其中 conf 目录下为主配置文件, conf.d 目录下为扩展配置文件。

conf/httpd.conf 里比较重要的配置参数:

# 默认监听端口
Listen 80
# 网站文件路径
DocumentRoot "/var/www/html"

其他网站和权限等属性设置 请另行了解 。

安装 Nginx

yum install nginx

安装完成后,系统服务名为nginx

# 启动nginx
systemctl start nginx
# 随系统启动nginx
systemctl enable nginx

配置文件在 /etc/nginx 下面

主配置文件为 nginx.conf ,扩展配置文件在 conf.d 目录下

可以配置多个 server,每个 server 单独监听一个端口,为了方便可以将 server 放在一个单独的配置文件里,配置文件以 .conf 作为扩展名,将被设置引用。

默认配置在 default.conf 里,这里单独新建一个网站的配置文件 site.conf

# 把旗下所有的域名都跳转到主域名上
server {
        listen      2000;
        server_name site1.com site2.com site2.net www.site2.com www.site2.net;
        return 301 $scheme://www.site1.com$request_uri;
}

server {
        listen      2000;
        server_name www.site1.com;

        location / {
                root   /home/site;
                index  index.html index.htm;
                # 目录浏览功能
                autoindex off;
                # 目录浏览文件大小精确显示,关闭后大文件将显示KB MB GB等
                autoindex_exact_size off;
                # 目录浏览文件时间显示,打开显示本地时区时间,关闭显示GMT时间
                autoindex_localtime on;
        }
}

后面主要就使用nginx作为网站的WEB服务器了。

发表在 服务器 | 标签为 , , | 留下评论

简单设置防火墙

开始之前先关闭SELINUX。

这是一个Linux下的访问控制系统,主要进行安全策略和权限控制的管理,对很多涉及目录和文件的操作都会产生影响,个人用户建议关闭,如有兴趣了解可以单独进行学习。

vim /etc/selinux/config

将 SELINUX=enforcing 修改为 SELINUX=disabled

然后重启系统

reboot

网络防火墙FirewallD简单讲解。

FirewallD就是Linux下的防火墙,这里介绍一些常用的命令来应对后面搭建WEB服务器的需要。

首先是防火墙的开关命令,如果不想要防火墙可以直接关闭并取消开机启动。

# 启动FirewallD
systemctl start firewalld
# 关闭 FirewallD
systemctl start firewalld
# 设置开机启动(当前如果没启动并不会启动)
systemctl enable firewalld
# 取消开机启动(并不会关闭启动中的防火墙)
systemctl disable firewalld
# 查看防火墙运行状态
systemctl status firewalld
# 查看所有防火墙规则
firewall-cmd --list-all
# 重新加载防火墙
firewall-cmd --reload

服务的管理,FirewallD的服务配置文件在/usr/lib/firewalld/services/下,可以理解成一个批量包,如果防火墙允许某个service,那么该service下的所有规则将全被允许。

如果需要修改系统服务的默认端口,要将对应的配置文件复制/etc/firewalld/services目录并进行调整。如果直接修改,在系统升级时会重置为默认配置。

# 查看所有可以设置的服务
firewall-cmd --get-services
# 查看当前允许的服务
firewall-cmd --list-services
# 查询一个服务的状态
firewall-cmd --query-service http
# 允许一个服务
firewall-cmd --add-service=http
# 禁止一个服务
firewall-cmd --remove-service=http
# 允许一个服务多少秒
firewall-cmd --add-service=http --timeout=60

注意:这些设置在重新加载防火墙或者重启系统后将会失效,如果想要让设置永久生效,需要添加–permanent参数

例如:

firewall-cmd --permanent --add-service=http

但是这样设置并不会立即生效,需要重新加载防火墙使其生效。同样,删除服务包括后面的端口管理要永久生效都要添加该参数。

端口的管理,如果有一些软件不在常用服务列表里,或者把系统服务的默认端口更改了,可以直接添加一个允许访问的端口。

# 查看当前允许的端口
firewall-cmd --list-ports
# 添加一个允许的端口
firewall-cmd --add-port=8080/tcp
# 删除一个允许的端口
firewall-cmd --remove-port=8080/tcp
# 添加一个允许的端口多少秒
firewall-cmd --add-port=8080/tcp --timeout=60

同样,要使其永久生效需要添加参数permanent,后面将不再赘述。

防火墙还有一个小功能,可以进行端口转发,Linux不允许root以外的用户使用1024以下的端口,我们举例设置一个1024以上的端口转发到80端口。

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080

这样访问该机的80端口将被转发到8080端口,这里转发的目标地址需要添加防火墙允许,也就是要允许8080端口访问,而指向端口不用在防火墙里设置允许,这里是80端口。

防火墙的设置就简单介绍到这里,如需要更加详细的学习请查询专业资料,其中比较重要的是防火墙的filter功能。

发表在 服务器 | 标签为 , | 留下评论

安装数据库

安装MySQL

参考文章: https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

CentOS7的默认源中采用的是MariaDB

我们这里来安装MySQL

首先到 https://dev.mysql.com/downloads/repo/yum/

这个网站去找到Linux 7对应版本的rpm源

当前是MySQL 8.0

rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum makecache
# 57版本地址 https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

这时候就可以通过源安装mysql了

yum -y install mysql-community-server

修改mysql配置文件,让其支持简单密码,否则密码必须包含大写小写数字和符号

vim /etc/my.cnf
[mysqld]
# 在原有配置后面添加如下内容
# 服务器默认字符集
character-set-server=utf8
# 表名默认都是小写
lower_case_table_names=1
# 监听的端口默认3306
port=3306
# SQL执行模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 是否校验密码,旧版本5.7以前采用
# validate-password=OFF

启动并初始化mysql

systemctl start mysqld

如果在修改配置文件之前启动初始化过mysql的话可能会启动报错:

[ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').

目前来看是8.0的一个问题,没有好的解决办法,重装mysql是一个办法。

mysql日志里找到root初始密码

grep 'temporary password' /var/log/mysqld.log

登陆mysql

mysql -uroot -p

8.0版设置允许简单密码(不然密码强制要求大写小写数字和符号)

set global validate_password.policy=0;
set global validate_password.length=4;

输入前面找到的密码,然后修改默认密码(不修改密码不能进行操作)

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

如果想要远程使用root用户进行登陆,还需要更改root用户的Host

use mysql;
update user set host='%' where user='root';
flush privileges;

这时候搭建就完成了。

查看当前mysql版本

mysql -V

或者登陆到mysql里

select version();

这个命令可以进行一些简单的安全设置,有兴趣的可以了解一下。

mysql_secure_installation

安装MariaDB

CentOS7的默认源中的MariaDB版本为5.5

先添加最新版本的repo

首先到 https://downloads.mariadb.org/mariadb/repositories/

这个网站去找到Linux 7对应版本源,要求我们自行录入

其中的源调整为清华大学的镜像,提高国内访问速度

vim /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.4 CentOS repository list - created 2019-07-12 06:52 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.4/centos8-amd64/
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
# baseurl = https://mirrors.aliyun.com/mariadb/yum/10.4/centos8-amd64/
# gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB

然后安装MariaDB

yum -y install MariaDB-server MariaDB-client

修改配置文件,同mysql的设置,注意路径不同

vim /etc/my.cnf.d/server.cnf
[mysqld]
# 在mysqld下面添加如下内容
character-set-server=utf8
lower_case_table_names=1
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

启动并初始化mariadb,mariadb的服务名同样可以使用mysqld,比如下面两条命令相同

systemctl start mariadb
systemctl start mysqld

后面均使用mariadb作为服务名

登陆本地mariadb,同样可以使用mysql作为命令,下面两条命令相同

mariadb
mysql

修改默认密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

如果想要远程使用root用户进行登陆,还需要更改root用户的Host

use mysql;
update user set host='%' where user='root';
flush privileges;

这时候搭建就完成了。

查看当前mariadb版本

mariadb -V

或者登陆到mariadb里

select version();

mysql安全设置的命令同样可以使用。

后面均使用mariadb作为运行环境。

发表在 数据库 | 标签为 , | 留下评论

基础环境配置

系统环境包

# C运行库,默认已经安装
sudo yum -y install glibc
# 下载工具
sudo yum -y install wget
# 标准化包
sudo yum -y install redhat-release
sudo yum -y install redhat-lsb
# 第三方源
sudo yum -y install epel-release
# 文本编辑工具升级版
sudo yum -y install vim
# 文件互传工具
sudo yum -y install lrzsz
# 多屏工具
sudo yum -y install screen
# 旧网络工具(不推荐安装,系统自带iproute2)
sudo yum -y install net-tools

运行环境

# GCC编译器
sudo yum -y install gcc
# ICU库
sudo yum -y install icu
# UNWIND库
sudo yum -y install libunwind

查看系统版本

lsb_release -a
发表在 服务器 | 标签为 | 留下评论

Linux从网络配置开始

学习Linux从简单的CentOS7 minimal开始。

系统安装完,要先更新一下,发现没有网络,我们今天的任务就是把网络配置好。

以root身份登陆系统,查看一下网卡状态:

nmcli device status  简写  nmcli d

发现网卡并没有连接。

将网卡设置为自动连接:

nmcli connection modify ens33 connection.autoconnect yes

其中ens33为网卡的名字,conneciton可以缩写为con,modify可以缩写为mod。(下同)

重启网络服务:

systemctl restart network

如果是在DHCP环境中这时候网络已经连接上了。

可以查看一下:

nmcli device show

或者

ip address  简写  ip a

如果网络环境不是DHCP或者需要手动设置IP。

先关闭DHCP:

nmcli connection modify ens33 ipv4.method manual

设置IP:

nmcli connection modify ens33 ipv4.address 192.168.0.35/24 ipv4.gateway 192.168.0.1

其中24为子网掩码,表示24位1,等同于255.255.255.0。

如果需要手动设置DNS:

nmcli connection modify ens33 ipv4.dns 192.168.0.1

添加第二个DNS,注意加号:

nmcli connection modify ens33 +ipv4.dns 8.8.8.8

重启网络服务:

systemctl restart network

顺便更新一下系统:

yum -y update

搞定收工。

题外话:

1. 系统自带一个最简单的网络管理UI:

nmtui

可以设置网卡自动启动和hostname,基本没什么卵用。

关于hostname有一个专门的配置工具hostnamectl:

hostnamectl status
hostnamectl set-hostname <NAME>

这里就不细说了。

2. 所有这些配置都会存储在 /etc/sysconfig/network-scripts/ 目录里。配置文件名叫做ifcfg-<网卡名>,例如我网卡的配置就叫做ifcfg-ens33。

可以直接通过修改配置文件进行网络配置,但是并不推荐。

3. CentOS7有一套新的网卡命名规则,所以你看到这里网卡名叫做ens33,而不是传统的eth0和eth1,可以修改网卡名,但是没必要。

4. 参考资料

https://developer.gnome.org/NetworkManager/stable/

相关搜索关键词:nmcli命令集,NetworkManager。

发表在 服务器 | 标签为 , | 留下评论

终于把网站点亮了

断断续续折腾了有一段时间,终于能访问了。以后写一些生活琐事和学习中的问题和经验。

发表在 随笔 | 留下评论