MySQL与MariaDB学习笔记:MariaDB的安装与配置
前言
最近突发灵感,想要用ASP.Net
或者Go语言
来实现一个社区类的网站,但是在动手之前发现我关于数据库方面的知识还是很薄弱的,刚好又想起了我还有个闲置的博客站...而且手写这一类的笔记也很容易丢,我就索性写电子版本的笔记,全当打字的练习好了.
请注意,这只是我的个人笔记,这可能并不适合于想要自学的同学.但是我会从基础写起,尽可能地过一遍这本书中的主要知识点.
本笔记参考书籍:
MySQL与MariaDB学习指南
下载
MySQL
你可以从https://dev.mysql.com/downloads/下载到MySQL的community版本,你应该根据你的操作系统与CPU架构选择合适自己的版本,请注意不要下载开发中的版本.
MariaDB
你可以从https://mariadb.org/download/下载到MariaDB,与MySQL同样,你应该根据你的操作系统与CPU架构选择合适自己的版本,请注意不要下载开发中的版本.
安装
Windows
下载上面的安装包后运行安装包,根据提示安装即可.这很简单,又由于我不打算在我的电脑上直接安装,所以我就不给出详细的安装步骤了.
Ubuntu
打开终端,运行:
sudo apt update
sudo apt install mariadb mariadb-cilent
Alpine Linux
由于以后在生产环境中,数据库软件一般都会部署在linux上,但是我不想弄很大的linux发行版,所以这边直接使用了轻巧的Alpine Linux
,运行在虚拟机中,并在物理机中使用ssh连接到虚拟机来执行命令,方便我复制输出结果.
因此,接下来的笔记内容所使用的环境为:
Server version: 10.11.5-MariaDB Alpine Linux
在虚拟机中安装完成Alpine linux后,运行:
#安装MariaDB
apk add mariadb
apk add mariadb-client
#初始化MariaDB
/etc/init.d/mariadb setup
#启动MariaDB
service mariadb start
测试运行
打开终端,尝试着运行mysql
命令,如果你的输出类似于:
root@localhost ~# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.11.5-MariaDB Alpine Linux
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
真棒!你已经安装成功了,如果想要退出这个界面,可以输入exit;
命令退出MySQL终端.
配置
给root设置初始的密码
这是很重要的一个步骤,因为root用户的权限非常大,但是它初始的密码是空的,因此我们需要修改它.例如可以使用附带安装的mysqladmin
工具:
mysqladmin -u root -p flush-privileges password "114514"
这里我们将root密码改为了114514
,它会给出提示Enter password:
,由于我们是全新安装,root并没有密码,所以你可以直接打一个回车.
但是如果你想要在一个服务器上更改root密码,这就不安全了,例如在linux中可以使用history
命令查看你的命令日志,就像这样:
mysql -u root -p
mysqladmin -u root -p flush-privileges password "114514"
service mariadb start
poweroff
mysql
/etc/init.d/mariadb setup
apk add mariadb-client
apk search mariadb
apk add mariadb
/usr/bin/fish
nano /etc/passwd
service sshd restart
service
sysctl sshd restart
nano /etc/ssh/sshd_config
busybox chsh
chsh
~
~
~
以上是我的命令执行日志,可以很清楚的看到我通过这个命令更改了root密码,因此为了安全起见,我们应该执行:
mysqladmin -u root -p flush-privileges password
这里会提示你输入一遍原来的密码,再输入两遍你想要使用的新密码.
用户名@主机名?
在MySQL中,权限由用户名和主机来决定,例如我们刚刚所提到的root便是用户名,而我们是在本机直接执行的SQL语句,所以我们的主机便是localhost,所以我们刚刚更改root密码的操作,对应的就是root@localhost
如果你想要查看你的所有组合,你可以这样做:
首先进入MySQL终端:
mysql -u root -p
输入密码进入SQL终端后,使用以下命令查看所有的组合:
SELECT User,Host FROM mysql.user;
你将得到以下输出:
+-------------+-----------+
| User | Host |
+-------------+-----------+
| PUBLIC | |
| | localhost |
| mariadb.sys | localhost |
| mysql | localhost |
| root | localhost |
+-------------+-----------+
5 rows in set (0.061 sec)
在上面的结果中,出现了一个空用户名,主机名为localhost的组合,这就是匿名用户,也就是说任何人都可以从localhost登录.
这里需要注意一点,有的MySQL版本可能会出现root@%
的组合,%的意思是任何主机,也就是说root用户可以被从任何地方登入,这样很不安全,所以你可以使用下面的SQL语句删除这样的组合:
DROP USER 'root'@'%';
当然在这里也可以进行密码的修改,但是这里有个坑:如果有root@localhost
和[email protected]
这样的两个组合,虽然localhost和127.0.0.1指的都是同一主机,但是还是需要分两次修改密码.
例如,如果我想更改我的root@localhost
组合的密码,我可以执行:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('114514');
当你完成了上述的修改,你需要退出SQL终端,在命令行用下面的命令来刷新一下,使得更改生效:
mysqladmin -u root -p flush-privileges
之后就可以使用更改后的密码登录了.
创建用户
基于安全原因,日常来说还是不要使用root用户为妙,我们来创建一个普通的用户来进行日常的数据管理,打开的你的MySQL终端:
GRANT USAGE ON *.* TO 'corona'@'localhost' IDENTIFIED BY '114514';
这里就创建了一个名叫corona密码为114514的普通用户,其中*.*
代表所有数据库和所有数据表.但是这个时候这个用户还是没有任何权限的,什么都不能做,我们可以给这个用户赋予查询权限:
GRANT SELECT ON *.* TO 'corona'@'localhost';
这里的SELECT
是查询语句的意思,这里我们就可以使用corona账户来使用select命令查询数据了.
我们可以用下面的命令来查看corona所拥有的权限:
SHOW GRANTS FOR 'corona'@'localhost'\G
输出如下:
*************************** 1. row ***************************
Grants for corona@localhost: GRANT SELECT ON *.* TO `corona`@`localhost` IDENTIFIED BY PASSWORD '*D9050F2D99C3DDD8138912B7BDF8F4BACBE3A8E7'
1 row in set (0.000 sec)
你可以看到,这里显示的密码是加密后的密码.
当然为了学习起见,我们还是赋予这个用户完整的基础权限比较好:
GRANT ALL ON *.* TO 'corona'@'localhost';
这里的ALL
代指所有权限.