Linux学习笔记----mariadb数据库管理

    xiaoxiao2022-07-14  166

    数据库

    可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合

    数据库类型

    数据库有两种类型,分别是关系型数据库与非关系型数据库

    关系型数据库主要有:

    Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等等。 非关系型数据库主要有: NoSql、Cloudant、MongoDb、redis、HBase等等

    mySQL (关系型数据库管理系统)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。

    MariaDB

     MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

    安装MariaDB

    yum search mariadb yum install mariadb-server.x86_64 -y systemctl start mariadb systemctl enable mariadb systemctl status mariadb

    MariaDB安全初始化

    数据库起始状态的设定信息是不安全的,任何用户都可以登陆而不需要输密码,所以我们需要作以下设定: mysql_secure_installation 安全初始化 Enter current password for root (enter for none): 刚下载的mariadb超户是没有密码的,且默认登陆的用户就是超户,所以直接回车 Set root password? [Y/n] 是否为超户设置密码 New password: 输入你设置的密码 Re-enter new password: 再次输入你设置的密码 Remove anonymous users? [Y/n] 是否移走匿名用户 Disallow root login remotely? [Y/n] 不允许超户远程登陆 Remove test database and access to it? [Y/n] 删掉测试的数据库 Reload privilege tables now? [Y/n] 对数据库刷新,让所有的数据同步

    设置完成后尝试用密码去登录MariaDB

    默认情况下,数据库的网络接口是打开的 为了安全需要关闭此接口 或者编辑配置文件/etc/my.cnf(vim /etc/my.cnf)写入skip-networking=1关闭网络接口 重启服务systemctl restart mariadb,再次查看mysql的端口3306就没有了

    数据库的管理

    查询

    SHOW DATABASES; 查询数据库

    USE mysql; 进入mysql数据库 SHOW TABLES; 查询mysql的所有表

    SELECT * FROM user; 查询user表里的字段

    SELECT Host,User,Password FROM user; 查询user表里Host,User,Password字段

    SELECT Host,User,Password FROM user where Host='127.0.0.1';查询user表里Host,User,Password字段对应的行

    建立

    CREATE DATABASE westos; 创建一个新的的数据库westos SHOW DATABASES; 查询数据库是否添加成功

    CREATE TABLE userlist( 建立表 -> username varchar(50) not null, username数据最长为50个字符,且不能为空 -> password varchar(100) not null password数据最长为100个字符,且不能为空 -> ); DESC userlist; 查看表结构

    varchar是可变长字符串,它与char的区别是 1.占据空间不同:char的长度是不可变的,而varchar的长度是可变的; 2、存取速度不同:char的存取数度比varchar要快得多,因为其长度固定,方便程序的存储与查找; 3、存储方式不同:char的存储方式是对英文字符占用1个字节,对汉字占用两个字节,而varchar的存储方式是对每个英文字符占用2个字节,汉字也占用2个字节;

    INSERT INTO userlist VALUES ('shen','123'); 插入数据到userlist表中 INSERT INTO userlist VALUES ('shen','456'); 插入数据到userlist表中 SELECT * FROM userlist; 查询所有字段在userlist表中

    更改

    ALTER TABLE userlist RENAME user_list; 把userlist表名改为user_list ALTER TABLE user_list RENAME userlist; 把表名再改回来

    ALTER TABLE userlist ADD age varchar(5); 向表userlist中增加age列

    ALTER TABLE userlist DROP age; 删除表中的age列

    ALTER TABLE userlist ADD age varchar(5) AFTER username; 向username后加入age列

    UPDATE userlist SET age='12'; 把表中所有的age列的值改为12

    UPDATE userlist SET age='15' WHERE username='shen1'; 把表中username是shen1的列的age值改为15

    INSERT INTO userlist VALUES('shen1','15','456'); 插入一个新用户shen1

    删除

    DELETE FROM userlist WHERE username=‘’shen’ 删除表中username是shen的行

    DELETE FROM userlist WHERE username=‘’shen’ AND age='12' 删除表中username是shen且age为12的行

    DELETE FROM userlist WHERE username=(‘shen’|'shen1'); 删除表中username是shen和shen1的行

    DROP TABLE userlist; 删表

    DROP DATABASE westos; 删库

    用户授权

    首先关闭防火墙,取消掉之前修改的配置并开放端口3306,让其他主机可以通过网络登陆数据库

    CREATE USER westos@'%' identified by 'westos'; 创建一个用户,密码为westos并且可以在任何地方可以登陆数据库 SELECT User,Host FROM mysql.user; CREATE USER lee@localhost identified by 'westos'; 创建一个用户名为lee,用户密码为westos的用户,只能在本地登陆数据库 SELECT User,Host FROM mysql.user;

    测试:分别在本机用lee用户和其他主机用westos用户测试: 其他主机同样需要安装mariadb,安装完后开启服务systemctl start mariadb.service 这是没有授权的情况: 这是授权之后的情况:

    GRANT SELECT,INSERT,DELETE on westos.* TO westos@‘%s’; 授westos库的权利给其他用户 GRANT SELECT,INSERT,DELETE on mysql.* TO westos@‘%s’; 授mysql库的权利给其他用户 SHOW GRANTS FOR westos@‘%s’; 显示其他用户所拥有的权利

    数据库系统和文件系统一样,都是需要授权的,此时我们给两个用户都没有赋予权力,所以他们只能登陆,且只能看他能看到部分可见的数据库,我们需要root给他们赋予权力他们才能进行其他增删改查操作。 超级用户一次可以授予多个权力,用逗号,分开就行。

    此时用其他用户登陆查看数据库,可以显示mysql和westos两个数据库 FLUSH PRIVILEGES; 刷新

    数据库的备份

    数据库文件所在目录是/var/lib/mysql

    mysqldump -uroot -pwestos westos > /mnt/wesots.sql 将数据库westos备份到/mnt下 mysqldump -uroot -pwestos westos --no-data 将数据库westos备份,不备份数据只备份表的结构 mysqldump -uroot -p --all-databases 备份所有数据库 mysqldump -uroot -p --all-databases --no-data 备份所有数据库的表的结构

    恢复方式1:

    mysql -uroot -p -e "CREATE DATABASE westos;" 先创建数据库 mysql -uroot -p westos < /mnt/westos.sql 再把备份的导入

    恢复方式2:

    vim /mnt/westos.sql 在中间写入 CREATE DATABASE westos; USE westos; mysql -uroot -p < /mnt/westos.sql

    恢复成功!

    修改数据库超级用户的密码

    知道原密码时

    mysqladmin -uroot -pwestos password redhat 将原密码westos改为redhat mysql -uroot -predhat 用新密码登陆测试

    忘记原密码时: 1.首先,关闭数据库服务

    systemctl stop mariadb.service

    2.开启安全模式,跳过授权表 ,因为会占用终端所以加&打入后台运行。

    mysqld_safe --skip-grant-tables &

    3.此时任何用户都可以直接输入mysql登陆而不用密码 4.我们输入mysql后,在mysql数据库的user表中修改root的密码 5.结束所有进程,再开启数据库服务systemctl start mariadb.service 此时用mysql不能直接登陆数据库

    安装phpmyadmin 数据库图形管理

     phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。 首先安装httpd服务,开启服务并设置为开机启动:

    yum install httpd -y systemctl start httpd.service systemctl enable httpd.service

    获得phpmyadmin的压缩包,并把phpmyadmin的安装包在/var/www/html目录下解压,并解包,我们可以重命名为mysqladmin方便在浏览器下访问。

    yum install lftp -y tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 解压并解包 mv phpMyAdmin-3.4.0-all-languages/ mysqladmin 重命名

    安装php,php-mysql两个包,此时可以通过php -m 命令查看mysql有没有出现,这表示已经运行php加载的模块。

    yum search php yum install php.x86_64 -y yum install php-mysql.x86_64 -y php -m

    vim Documentation.txt并cp config.sample.inc.php config.inc.php,并将Documentation.txt中139行中的cookie的几个字符ba17c1ec07d65003添加到config.inc.php文件中,重启httpd服务systemctl restart httpd.service 此时,在浏览器中输入172.25.60.100/mysqladmin就可以访问了,建库,建表。在shell端可以检测

    最新回复(0)