zoukankan      html  css  js  c++  java
  • 《Linux就该这么学》培训笔记_ch18_使用MariaDB数据库管理系统

    《Linux就该这么学》培训笔记_ch18_使用MariaDB数据库管理系统

    文章最后会post上书本的笔记照片。

    文章主要内容

    由于Oracle公司在2009年收购了MySQL的母公司Sun,因此MySQL数据库项目也随之纳入Oracle麾下,逐步从开源变成闭源。MySQL项目创始者重新研发了一款名为MariaDB的全新数据库管理系统。该软件当前由开源社区进行维护,是MySQL的分支产品,而且几乎完全兼容MySQL。

    因为数据库基本上是IT行业必学的东西,加之本人本来对数据库比较熟悉,所以概念什么的就懒得再写了。因此直接上干货!

    初始化MariaDB服务

    1.安装MariaDB数据库主程序和服务端程序,安装完成后启动服务程序并加入到开机启动项。

    yum install -y mariadb mariadb-server
    systemctl start mariadb 
    systemctl enable mariadb 

    2.执行mysql_secure_installation命令,对数据库程序进行初始化操作。初始化操作涉及下面5个步骤:

    1. 设置root管理员在数据库中的密码值(注意,该密码并非root管理员在系统中的密码,这里的密码值默认应该为空,可直接按回车键)。
    2. 设置root管理员在数据库中的专有密码。
    3. 随后删除匿名账户,并禁止root管理员从远程登录数据库,以确保数据库上运行的业务的安全性。
    4. 删除默认的测试数据库,取消测试数据库的一系列访问权限。
    5. 刷新授权列表,让初始化的设定立即生效。
    mysql_secure_installation 
    Enter current password for root (enter for none):当前数据库密码为空,直接按回车键
    Set root password? [Y/n] y
    New password:输入要为root管理员设置的数据库密码(666666)
    Re-enter new password:再次输入密码(666666)
    Remove anonymous users? [Y/n] y(删除匿名账户)
    Disallow root login remotely? [Y/n] y(禁止root管理员从远程登录)
    Remove test database and access to it? [Y/n] y(删除test数据库并取消对它的访问权限)
    Reload privilege tables now? [Y/n] y(刷新授权表,让初始化后的设定立即生效)

    关于第3点,实际上在很多生产环境中都需要使用站库分离的技术(即网站和数据库不在同一个服务器上),这种状况下访问数据库大部分是通过远程访问的。要允许root管理员从远程访问,则上面初始化策略的第3步应设置为no。还需要设置防火墙,使其放行对数据库服务程序的访问请求,数据库服务程序默认会占用3306端口,在防火墙策略中服务名称统一叫作mysql。最后还需要设置允许远程登录数据库的权限

    关于数据库的远程登录,客户机(Linux)需要安装MariaDB主程序(yum install -y mariadb)才能使用相关命令。

    firewall-cmd --permanent --add-service=mysql    #放行mysql服务
    firewall-cmd --reload
    mysql -u root -p
    MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by '666666'; #将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器

    首次登陆MariaDB数据库,用root身份登录。

    mysql -u root -p                                                         #root身份登录MariaDB数据库,-p验证该用户在数据库中的密码是否正确
    Enter password: 此处输入root管理员在数据库中的密码(初始化时设置的密码666666)    #
    MariaDB [(none)]>                                                        #登陆成功后的命令开头格式
    MariaDB [(none)]> SHOW databases;                                        #查看当前有哪些数据库执行数据库命令时,都需要在命令后面用分号(;)结尾)
    MariaDB [(none)]> SET password = PASSWORD('123456');                     #把当前用户(root)在数据库中的密码更改为123456
    MariaDB [(none)]> exit                                                   #退出登录
    mysql -u root -p                                                         #再次以root身份登录数据库
    Enter password:此处输入root管理员在数据库中的新密码(123456)                  #此时需要输入新密码才能成功登陆

    管理用户以及授权

    创建用户:使用root管理员登录数据库管理系统,然后按照“CREATE USER 用户名@主机名 IDENTIFIED BY '密码'; ”的格式创建数据库管理账户。

    MariaDB [(none)]> CREATE USER liwh@localhost IDENTIFIED BY '9527';        #创建用户liwh,仅供本地登录(localhost),密码为9527
    MariaDB [(none)]> use mysql                                               #使用数据库mysql
    MariaDB [mysql]> SELECT HOST,USER,PASSWORD FROM user WHERE USER="liwh";   #查看账户信息(数据库中的用户信息保存在mysql数据库的user表中)
    MariaDB [mysql]> exit                                                     #退出登录
    [root@linuxprobe ~]# mysql -u liwh -p                                     #以liwh身份登录(该用户没有数据库的任何操作权限)
    MariaDB [(none)]> show databases;                                         #查看MariaDB中有哪些数据库(显示不全,只有一个information_schema)

    为用户授权(grant)移除授权(revoke)

    grant命令:用于为账户进行授权。在使用grant命令时需要写上要赋予的权限、数据库及表单名称,以及对应的账户及主机信息。GRANT命令的常见格式以及解释:

    命令 作用
    GRANT 权限 ON 数据库.表单名称 TO 用户名@主机名 对某个特定数据库中的特定表单给予授权
    GRANT 权限 ON 数据库.* TO 用户名@主机名 对某个特定数据库中的所有表单给予授权
    GRANT 权限 ON *.* TO 用户名@主机名 对所有数据库及所有表单给予授权
    GRANT 权限1,权限2 ON 数据库.* TO 用户名@主机名 对某个数据库中的所有表单给予多个授权
    GRANT ALL PRIVILEGES ON *.* TO 用户名@主机名 对所有数据库及所有表单给予全部授权(需谨慎操作)

    revoke命令:移除授权的命令(revoke)与授权命令(grant)不同之外,其余部分(格式和参数)都是一致的。

    为账户授权:账户的授权工作肯定是需要数据库管理员账户来执行的。

    1. 以root管理员的身份登录到数据库管理系统中,针对mysql数据库中的user表单向账户liwh授予查询、更新、删除以及插入等权限;
    2. 查看用户liwh权限,以liwh身份登录数据库验证是否具有具体权限;
    3. 把用户liwh在上面获取的权限全部移除。
    [root@linuxprobe ~]# mysql -u root -p                                                  #以root身份登录MariaDB
    MariaDB [(none)]> use mysql;                                                           #使用mysql数据库
    MariaDB [mysql]> GRANT SELECT,UPDATE,DELETE,INSERT ON mysql.user TO liwh@localhost;    #赋予liwh对mysql数据库中的user表增删改查权限
    MariaDB [mysql]>  SHOW GRANTS FOR liwh@localhost;    #查看用户liwh的权限
    MariaDB [mysql]>  exit                               #退出登录
    [root@linuxprobe ~]# mysql -u liwh -p                #以liwh身份登录MariaDB
    MariaDB [(none)]> show databases;                    #查看MariaDB中有哪些数据库(只会显示liwh有权限操作的数据库)
    MariaDB [(none)]> use mysql                          #进入mysql数据库
    MariaDB [mysql]> SHOW TABLES;                        #查看mysql数据库中有哪些表(只会显示liwh有操作权限的表)
    MariaDB [mysql]> exit                                #退出登录
    [root@linuxprobe ~]# mysql -u root -p                                                     #以root身份登录MariaDB
    MariaDB [(none)]> use mysql;                                                              #使用mysql数据库
    MariaDB [mysql]> REVOKE SELECT,UPDATE,DELETE,INSERT ON mysql.user FROM luke@localhost;    #移除liwh对mysql数据库的user表的增删改查权限
    MariaDB [mysql]> SHOW GRANTS FOR luke@localhost;                                          #查看liwh权限(可以发现刚才对mysql数据库的user表的增删改查权限已经消失)

    创建数据库与表单

    用于创建数据库的命令以及作用:

    用法 作用
    CREATE database 数据库名称。 创建新的数据库
    DESCRIBE 表单名称; 描述表单
    UPDATE 表单名称 SET attribute=新值 WHERE attribute > 原始值; 更新表单中的数据
    USE 数据库名称; 指定使用的数据库
    SHOW databases; 显示当前已有的数据库
    SHOW tables; 显示当前数据库中的表单
    SELECT * FROM 表单名称; 从表单中选中某个记录值
    DELETE FROM 表单名 WHERE attribute=值; 从表单中删除某个记录值

    创建数据库test,并进入该数据库,创建表member。

    MariaDB [(none)]> CREATE DATABASE test;                                     #创建数据库test
    MariaDB [(none)]> SHOW databases;                                           #查看当前有哪些数据库
    MariaDB [(none)]> use test;                                                 #使用test数据库
    MariaDB [test]> CREATE TABLE member(num int,name char(15),yearsold int);    #在数据库test中创建表menber,定义3个字段
    MariaDB [test]> DESCRIBE member;                                            #查看menber结构信息

    管理表单及数据

    MariaDB [test]> INSERT INTO member(num,name,yearsold) VALUES('9527','liwh', '25');       #往表member插入数据:9527,liwh,25
    MariaDB [test]> INSERT INTO member(num,name,yearsold) VALUES('9528','liangjm', '29');    #往表member插入数据:9528,liangjm,29
    MariaDB [test]> INSERT INTO member(num,name,yearsold) VALUES('9529','wujm', '24');       #往表member插入数据:9529,wujm,24
    MariaDB [test]> select * from member;                                                    #查看表member所有内容(显示共3条内容)
    MariaDB [test]> update member set num = 6666 where name = 'liangjm';                     #把name值为liangjm的记录的num值改为6666
    MariaDB [test]> delete from member where num = 9529;                                     #删除num值为9529的记录
    MariaDB [test]> select * from member where yearsold > 24;                                #查出所有yearsold值大于24的记录(剩余的两条记录的yearsold值均大于24)

    数据库的备份及恢复

    mysqldump命令:用于备份数据库数据,格式:mysqldump [参数] [数据库名称]。其中参数-u参数用于定义登录数据库的账户名称,-p参数代表密码提示符。

    test数据库备份以及恢复步骤:

    1. 将test数据库中的内容导出成一个文件,并保存到root管理员的家目录中;
    2. 进入MariaDB,彻底删除test数据库(drop),这样member表也将被彻底删除。然后重新建立test数据库;
    3. 使用输入重定向符把刚刚备份的数据库文件导入到mysql命令中,执行该命令;
    4. 进入test数据库,查看test数据库中的表,发现先前的member表,数据库恢复完成。
    mysqldump -u root -p test > /root/testDB.dump    #导出test数据库到文件testDB.dump
    MariaDB [(none)]> DROP DATABASE test;            #彻底删除test数据库
    MariaDB [(none)]> SHOW databases;                #可以发现test数据库已经消失
    MariaDB [(none)]> CREATE DATABASE test;          #重新创建test数据库
    mysql -u root -p test < /root/testDB.dump        #把数据库备份文件testDB.dump导入到mysql命令 
    mysql -u root -p                                 #以root身份登入MariaDB
    MariaDB [(none)]> use test;                      #使用test数据库
    MariaDB [test]> SHOW tables;                     #可以发现member表已恢复
    MariaDB [test]> DESCRIBE member;                 #member表结构与删除前一模一样

    书本笔记

  • 相关阅读:
    Ext Form
    Ext中 get、getDom、getCmp的区别
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider())
    Ext BoxComponent
    Ext表单提示方式:msgTarget
    Ext.QuickTips.init()的使用
    Ext.Ajax.Request
    FitLayout
    视图Ext.Viewport和窗口Ext.Window用法
    禁用IE缓存
  • 原文地址:https://www.cnblogs.com/kaminwu/p/11016104.html
Copyright © 2011-2022 走看看