软件管理命令yum
yum insall xxx
以前大学上课,见得最多的Linux命令,就是yum install xxx,这个就是安装某个程序的命令。
而yum源,我的理解就是软件更新的来源,类似于手机里面的‘应用中心’,Linux对指定源下的软件,是信任的。
当然,这里的信任,不是Linux做的,而是人做的。配置源的运维认为这个第三方源是可信的,并把它配置在conf中,那Linux自然就按照这个第三方源来下载、更新软件。
yum源的指定
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
在变更这种配置之前,得备份。
或者说,干啥事之前,都得备份。
sudo mv /etc/yum.repos.d/ /etc/yum.repos.d.bak
sudo mkdir /etc/yum.repos.d
命令先把已有的yum源数据,目录变一下,相当于备份了。
然后新建一个/etc/yum.repos.d/目录,用作新的yum源目录。
最后使用curl命令,把阿里源指定版本的repos的文件下载下来。
PS:developer.aliyun.com/mirror/,左边的链接,就是阿里云的官方镜像站,挺齐全的。
下载完毕后,还得清空旧缓存,然后再重新建立新的缓存。
[watcher@functiona yum.repos.d]$ sudo yum clean all && sudo yum makecache
Loaded plugins: fastestmirror, langpacks
Cleaning repos: base extras updates
Cleaning up list of fastest mirrors
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/10): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/10): base/7/x86_64/primary_db | 6.1 MB 00:00:00
(3/10): base/7/x86_64/other_db | 2.6 MB 00:00:00
(4/10): extras/7/x86_64/primary_db | 253 kB 00:00:00
(5/10): extras/7/x86_64/filelists_db | 305 kB 00:00:00
(6/10): base/7/x86_64/filelists_db | 7.2 MB 00:00:00
(7/10): extras/7/x86_64/other_db | 154 kB 00:00:00
(8/10): updates/7/x86_64/primary_db | 27 MB 00:00:03
(9/10): updates/7/x86_64/filelists_db | 15 MB 00:00:03
(10/10): updates/7/x86_64/other_db | 1.6 MB 00:00:00
Metadata Cache Created
数据库MySQL/MariaDB的安装
经了解,MySQL有一个开源版本,就是MariaDB。
两者好像可以高度兼容,那我还是优先学习开源的MariaDB吧。
sudo yum -y install mariadb*
经过一段时间后,MariaDB就装好了。
默认情况下,数据库的配置文件在/etc/my.cnf。
然后数据目录就在/var/lib/mysql。
[watcher@functiona lib]$ cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
这种数据的存放方式,很奢侈,放在根目录里面了。
数据目录的迁移,以及目录归属的设置
如果后续有挂载其他盘符,专门用来存放数据,那么可以通过在对应目录,新建mysql目录,将这个目录的路径填充进配置文件,然后重启MariaDB进程就行。
对了,重启之前还得定义新数据库目录的归属。
sudo chown -R mysql:mysql /xxx/mysql
安装MySQL后,Linux系统一般会新建一个mysql用户以及组,以供数据库来使用。在新建之后,及时将新的数据库目录的读写权限,开放给mysql用户和组,避免后续数据库尝试读写时,因为权限不足,出现各种问题。
-R的目的是,将目录下的全部子目录,以及对应的所有文件的所属组/用户,都统一变更。如果不加-R,那么,后续非mysql用户创建的(例如管理员手动新建的)组,其所属用户和组,将自动变为管理员当时的用户和组。
我尝试了不加-R的情况下,在目录下手动新建一个目录,发现归属用户和组确实有所不同。
testdir目录的归属为mysql。
但目录里面,我通过sudo新建的目录testaaa,则归属于root。
MariaDB的初始化
因为是测试机,我就随便新建目录,然后迁移数据库的目录地址了。
PS:如果出现,权限/归属都设定好了,但还是不能创建的情况,那么可能是SELinux的问题。临时关闭的命令如下:
sudo setenforce 0
因为是初学的关系,暂时不深究这个SELinux。
然后就是,使用mysql_secure_installation来初始化数据库。(假设已经重启过MariaDB进程了)
[watcher@functiona opt]$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
这里的密码,不是Linux的root账户密码,而是MariaDB数据库中,root的密码。一开始的密码为空,直接回车就行。
后续按照一系列提示,按照你的想法选择yes或no,然后就结束了。
数据库有关网络连接的初步安全策略
我想知道,数据库一开始的监听范围是多大。
看起来,监听范围是全部IP。
假设,这个Linux主机可以连接外网,那么数据库就暴露在外了,不安全(个人觉得)。
可以尝试着把数据库的监听范围缩小到本机。
或者,云主机厂商会给那种安全策略,禁止外部请求访问3306端口,这也可以起到防护的效果。
bind-address = 127.0.0.1
上述配置,可以添加在配置文件中(默认为/etc/my.cnf),配置完毕后再重启数据库,再通过ss命令查看,就发现数据库的监听IP,只有本机了。
[watcher@functiona opt]$ sudo cat /etc/my.cnf
[mysqld]
bind-address = 127.0.0.1
datadir=/opt/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
Redis安装
Redis和MariaDB的异同
Redis也是一个数据库软件,开源的。
大概了解了下两者的区别:
Redis侧重于内存存储,它将数据信息存储在内存上,而不是存储中。这意味着Redis可以实现非常快速的查询效果。另外就是,Redis支持多种数据结构,例如字符串、哈希、列表、集合等,方便开发人员“因材施教”,实现各种复杂的功能。
MariaDB侧重于磁盘存储与结构化数据管理,它把数据持久化存储在磁盘之中,凭借成熟的存储引擎保障数据安全稳定。这使得MariaDB适合长期存储大量数据,即便系统重启或遭遇故障,数据也不会丢失。同时,它全面支持SQL语言,面对一些要求极高的场景,需要查询特定数据的时候,MariaDB数据库的优势将会进一步凸显。
安装小插曲——EPEL没关联
[watcher@functiona ~]$ sudo yum install -y redis
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
No package redis available.
Error: Nothing to do
在运行yum的时候,发现Linux提示,阿里云的源里面,没有Redis的包。
这不大合理吧?询问了下互联网,发现可能是没有配置EPEL源的原因。
EPEL(Extra Packages for Enterprise Linux)是为企业级Linux提供的仓库源。
sudo yum install -y epel-release
安装完EPEL之后,再次安装Redis,就发现进入下载安装的步骤了。
不过我发现,速度太慢了,似乎这个仓库也得换一次源。用的源好像是海外的。
[watcher@functiona yum.repos.d]$ sudo mv ./epel.repo ./epel.repo.bak
[watcher@functiona yum.repos.d]$ sudo mv ./epel-testing.repo ./epel-testing.repo.bak
[watcher@functiona yum.repos.d]$ sudo curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
万事先备份,然后再下载阿里云的镜像源。
重新整一下缓存。
再下载Redis,就快很多了。
观察发现,Redis的默认端口是6379,默认监听的地址就是本机地址。
临时了解wget和curl
在现实工作中,经常需要通过curl来模拟访问请求。
经过互联网的学习,也是第一次了解到,Chrome浏览器支持各种各样的格式复制。
真的第一次知道,太牛了。
wget和curl,我的理解是,前者是专才,下载文件是一把好手;后者是全才,除了下载文件之外,还可以处理更多的网络协议、请求方式。
感觉跟电脑领域的CPU和GPU的概念相似。一个是专才(GPU),一个是全才(CPU)。
(发现好像可以直接开始gtihub了,决定直接整一些小项目来进一步学习)