1.安装数据库
1.MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
2.相对于MySQL最新的版本5.6来说,在性能、功能、管理、NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。
实验
-1-安装mariadb
<1>根据mariadb查找mariadb的相关安装信息
[root@dns-server ~]# yum search mariadb
<2>根据查找的相关信息安装mariadb软件
[root@dns-server ~]# yum install mariadb-server.x86_64 -y
<3>开启mariadb
[root@dns-server ~]# systemctl start mariadb
-2-关闭mysql开放接口的功能
<4>查看mysql是否具有对开放接口功能,发现具有
[root@dns-server ~]# netstat -antlupe | grep mysql
结论:mysql有对外开放接口功能,且接口是3306
<5>进入数据库属性配置文件,并更改数据库的接口的功能,使其生效
[root@dns-server ~]# vim /etc/my.cnf
[root@dns-server ~]# systemctl restart mariadb
在配置文件中添加如下内容(注意一定要在mysqld中进行添加,否则将无法关闭)
skip-networking=1 ##使数据库在互联网中开放的接口的功能是关闭的
<6>再次查看发现mysql没有对外开放的接口
[root@dns-server ~]# netstat -antlupe | grep mysql
-3-安全初始化的配置(当数据库起始状态设定信息是不安全的,需要做以下设定)
<7>输入初始化mysql的命令
[root@dns-server ~]# mysql_secure_installation
Enter current password for root (enter for none): ##输入超级用户的密码,如是第一次登陆,则直接按下回车既可,如果是第二次登陆,输入密码既可
Set root password? [Y/n] ##设置超级用户的密码,按回车会或Y都可
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] ##允许下载表
注意:
1.在这里除了超级用户密码外,都按回车(个人的做法)
2.mysql数据库管理员的root和Linux装好的root是完全无关的
-4-超级用户的登陆
-u是指定用户,-p是写入密码
<8>将用户密码以回显方式登陆(即不显示密码)
[root@dns-server ~]# mysql -uroot -p
<9>显示用户密码登陆(不建议这样做,因为通过调用命令会看到密码)
[root@dns-server ~]# mysql -uroot -pwestos
2.数据库的管理
(1)建立
SHOW DATABASES; ##列出库
CREATE DATABASE westos; ##建立库
USE westos; ##进入库
CREATE TABLE linux( ##建立表(这样建立的原因是如果出现了错误,它会直接报错错误在第几行,可以加快排错
->username varchar(50) not null, ->password varchar(50) not null ->);
DESC linux;
INSERT INTO linux VALUES(’bai‘,’123‘);##插入指定数据到linux表中
SELECT * FROM linux; ##查询所有字段在linux表中
SELECT username,password from linux; ##查询指定字段在linux表中
实验:
建立
<1>进入数据库
[root@dns-server ~]# mysql -uroot -p
<2>列出库
MariaDB [(none)]> SHOW DATABASES;
<3>建立一个名为westos的库
MariaDB [(none)]> CREATE DATABASE westos;
<4>进入名为westos的库
MariaDB [(none)]> USE westos;
<5>建立表,添加字段(即表头)
MariaDB [westos]> CREATE TABLE linux(
-> username varchar(50) not null,
-> passwd varchar(50) not null
-> );
<6>列出表
MariaDB [westos]> SHOW TABLES;
<7>输出表头及相关信息
MariaDB [westos]> DESC linux;
<8>插入指定数据到linux表中
MariaDB [westos]> INSERT INTO linux VALUES('bai','211');
<9>查询所有字段及所对应的信息
MariaDB [westos]> SELECT * FROM linux;
<10>查询指定字段在linux表中
MariaDB [westos]> SELECT username from linux;
<11>退出mysql的设置
MariaDB [westos]> QUIT
(2)更改
UPDATE linux SET password=password(‘bai’) WHERE
username=‘bai’; ##将username为bai的password更改称bai ALTER TABLE linux ADD
class varchar(20); ##在表linux中添加新的字段class(默认将字段添加至最后) ALTER TABLE linux
DROP CLASS; ##将表中的linux删除 ALTER TABLE linux ADD age varchar(20) AFTER
password; ##在password之后添加age字段(在两个字段中间添加字段) ALTER TABLE linux RENAME
redhat; ##尽量不用更改,可能会丢失数据,更改前记得要进行备份
注意:字段不能添加至第一个字段前
实验:
<1>以超级用户身份进入数据库管理,进入westos库中
[root@dns-server ~]# mysql -uroot -p
MariaDB [(none)]> USE westos;
<2>在表linux中添加class字段及相关配并查询所有字段及相关信息
MariaDB [westos]> ALTER TABLE linux ADD class varchar(20);
MariaDB [westos]> SELECT * FROM linux;
<3>将class字段删除并查询所有字段及相关信息,会发现表linux中已经没有class字段
MariaDB [westos]> ALTER TABLE linux DROP class;
MariaDB [westos]> SELECT * FROM linux;
<4>将字段age添加至username字段后并查询所有字段及相关信息
MariaDB [westos]> ALTER TABLE linux ADD age varchar(20) AFTER username;
MariaDB [westos]> SELECT * FROM linux
<5>插入指定字段(即各个字段对应的内容)到表linux中并查询所有字段及相关信息
MariaDB [westos]> INSERT INTO linux VALUES('wen','236','434');
MariaDB [westos]> SELECT * FROM linux;
<6>将表linux中username为bai的passwd更改成211并查询所有字段及相关信息
MariaDB [westos]> UPDATE linux SET passwd='211' WHERE username='bai';
MariaDB [westos]> SELECT * FROM linux;
<7>退出mysql的设置
MariaDB [westos]> QUIT
(3)
数据库的备份
mysqldump -uroot -pwestos westos > /mnt/westos.sql mysqldump -uroot -pwestos westos --no-data mysqldump -uroot -pwestos --all-database mysqldump -uroot -pwestos --all-database -no-data
恢复方式1 mysql -uroot -pwestos -e “CREATE DATABASE westos;” mysql -uroot -pwestos westos < /mnt/westos.sql
恢复方式2
vim /etc/westos.sql ##在文件中添加如下内容,使其自动执行:
CREATE DATABASE westos; USE westos; mysql -uroot-pwestos < /mnt/westos.sql
实验:
<1>首先进入到mysql的目录下
[root@dns-server mysql]# cd /var/lib/mysql
<2>备份所有数据库(因为没有指定输出到哪个目录,所以就都显示在终端)
[root@dns-server mysql]# mysqldump -uroot -p --all-database
<3>备份所有数据库,但只有数据库框架,没有数据
[root@dns-server mysql]# mysqldump -uroot -p --all-database --no-data
<4>备份westos库框架(没有数据)
[root@dns-server mysql]# mysqldump -uroot -p westos --no-data
<5>备份westos库(包含数据)到/mnt/westos.sql
[root@dns-server mysql]# mysqldump -uroot -p westos > /mnt/westos.sql
<6>将westos库进行恢复
恢复方式1:
-1-首先进入mysql对库westos进行删除
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> DROP DATABASE westos;
MariaDB [(none)]> SHOW DATABASES;
-2-进入之前备份时拥有westos库的文件并进行修改,使其具有自动创建库的功能
[root@dns-server mysql]# vim /mnt/westos.sql
添加的内容如下:
CREATE DATABASE westos;
USE westos;
-3-将westos库还原
[root@dns-server mysql]# mysql -uroot -p < /mnt/westos.sql
-4-以超级用户身份进入数据库进行查看,发现westos库已经存在
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> QUIT
恢复方式2:
-1-首先进入mysql对库westos进行删除
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> DROP DATABASE westos;
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> QUIT
-2-进入之前备份时拥有westos库的文件并进行修改,使其不具有自动创建库的功能
[root@dns-server mysql]# vim /mnt/westos.sql
修改的内容如下:
##CREATE DATABASE westos;
##USE westos;
-3-先确保库内没有westos库,再利用命令创建库(-e是执行),最后查看库
[root@dns-server mysql]# mysql -uroot -p -e "SHOW DATABASES;"
[root@dns-server mysql]# mysql -uroot -p -e "CREATE DATABASE westos;"
[root@dns-server mysql]# mysql -uroot -p -e "SHOW DATABASES;"
-4-还原westos库并进行查看
[root@dns-server mysql]# mysql -uroot -p westos< /mnt/westos.sql
[root@dns-server mysql]# mysql -uroot -p -e "SHOW DATABASES;"
[root@dns-server mysql]# mysql -uroot -p -e "SELECT * FROM westos.linux;" ##查看westos库里的内容
注意:
在数据库中westos.linux相当于在文件中的westos/linux
(4)删除
DELETE FROM linux WHERE username=‘bai’; ##删除表linux中字段为username字段的那一行的信息
DROP TABLE linux;
DROP DATABASE westos;
实验:
<1>删除linux表中字段为username那一行的信息
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SELECT * FROM westos.linux;
MariaDB [(none)]> DELETE FROM westos.linux WHERE username='bai';
MariaDB [(none)]> SELECT * FROM westos.linux;
MariaDB [(none)]> QUIT;
<2>删除表linux并查看表linux是否被删除
MariaDB [(none)]> DROP TABLE westos.linux;
MariaDB [(none)]> USE westos;
MariaDB [westos]> SHOW TABLES;
<3>删除库westos并查看库westos是否被删除
MariaDB [(none)]> SHOW DATABASES;
MariaDB [westos]> DROP DATABASE westos;
MariaDB [(none)]> SHOW DATABASES;
(5)用户授权
CREATE USER bai@‘localhost’ identified by ‘westos’; ##添加用户 GRANT
SELECT,INSERT ON westos.* TO bai@localhost; ##增加用户的选择,插入权限 SHOW GRANTS
FOR bai@localhost; ##查看用户bai的权限 REVOKE INSERT ON westos.* FROMbai@localhost; ##去除用户bai的INSERT权限
DROP USER westos@localhost ##删除用户
FLUSH PRIVILEGES; ##如果更改权限后,一直没有应用,刷新一下,重新打开数据库既可,必须以超级用户的身份刷新
实验:
<1>进入数据库并查看数据库中含有的用户
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SELECT USER FROM mysql.user;
<2>创建两个用户(一个用户只允许本机登陆,另外一个用户允许所有人登陆),并进行用户的查看
MariaDB [(none)]> CREATE USER bai@'localhost' identified by 'westos'; ##只允许本机用户登陆,identified是指输入密码
MariaDB [(none)]> CREATE USER wen@'%' identified by 'westos'; ##允许所有人登陆
<3>以用户bai的身份进入数据库并尝试列出库,发现无法查看到其内容,退出既可
[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> QUIT
<4>以超级用户root的身份进入数据库并查看用户bai的权限,同时增加用户bai的SELECT权限
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> GRANT SELECT ON westos.* TO bai@localhost;
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> QUIT
<5>以用户bai的身份尝试列出库并查看字段及相关的内容,发现可以成功查看。但当想要插入字段的相关内容时,回出现权限报错
[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> SELECT * FROM westos.linux;
MariaDB [(none)]> USE westo
MariaDB [westos]> INSERT INTO linux VALUES('wen','218'); ##在表linux中添加字段的相关内容
MariaDB [westos]> QUIT
<6>以超级用户root的身份进入数据库并查看用户bai的权限,同时增加用户bai的INSERT权限
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> GRANT INSERT ON westos.* TO bai@localhost;
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> QUIT
<7>以用户bai的身份尝试插入字段的相关内容,发现可以成功插入
[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> USE westos;
MariaDB [westos]> INSERT INTO linux VALUES('wen','218');
MariaDB [westos]> SELECT * FROM westos.linux;
MariaDB [westos]> QUIT
<8>以超级用户的身份进入数据库并删除用户bai的SELECT权限并进行用户bai权限的查看
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> REVOKE SELECT ON westos.* FROM bai@localhost;
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> QUIT
<9>以用户bai的身份尝试列出库并查看字段及相关的信息,发现无法查看,但依旧可以插入字段的相关内容
[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> SELECT * FROM westos.linux;
MariaDB [(none)]> USE westos;
MariaDB [westos]> INSERT INTO linux VALUES('jia','218');
MariaDB [westos]> quit
<10>以超级用户的身份进入数据库并删除用户bai的INSERT权限并进行用户bai权限的查看
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> REVOKE SELECT ON westos.* FROM bai@localhost;
MariaDB [(none)]> SHOW GRANTS FOR bai@localhost;
MariaDB [(none)]> QUIT
<11>以用户bai的身份尝试插入字段的相关内容,发现不可以成功插入
[root@dns-server mysql]# mysql -ubai -p
MariaDB [(none)]> USE westos;
MariaDB [westos]> INSERT INTO linux VALUES('heihei','218');
MariaDB [(none)]> QUIT
<12>删除用户wen并进行查看,确认用户wen被删除
[root@dns-server mysql]# mysql -uroot -p
MariaDB [(none)]> SELECT USER FROM mysql.user;
MariaDB [(none)]> DROP USER wen@'%';
MariaDB [(none)]> SELECT USER FROM mysql.user;
MariaDB [(none)]> QUIT
注意:将select权限去除后,如果还有insert,则可能会看到库,但不能使用select
3.修改数据库的超级用户密码
当超级用户密码没有忘记时:
mysqladmin -uroot -pwestos password bai
当超级用户密码忘记时:
systemctl stop mariadb ##关闭数据库
mysqld_safe --skip-grant-tables &
mysql update mysql.user set Password=password(‘westos’)where Uswe=“root”;
kill -9 mysql的所有进程id systemctl start mariadb
-1-当超级用户密码没有忘记时:
<1>更改超级用户密码为bai
[root@dns-server mysql]# mysqladmin -uroot -pwestos password bai
<2>试图用更改前的密码和更改后的密码进行登陆数据库,发现密码更改成功
[root@dns-server mysql]# mysql -uroot -pwestos
[root@dns-server mysql]# mysql -uroot -pbai
MariaDB [(none)]> quit
-2-当超级用户密码忘记时:
<1>首先关闭数据库并跳过授权表并打入后台
[root@dns-server mysql]# systemctl stop mariadb
[root@dns-server mysql]# mysqld_safe --skip-grant-tables &
<2>直接使用mysql命令,然后更改密码
[root@dns-server mysql]# mysql
MariaDB [(none)]> SELECT * FROM mysql.user; ##密码都放在mysql.user的文件中,所有通过查看这个文件可以查看到密码
如果使用以下命令,则文件内显示的密码是明文:
MariaDB [(none)]> UPDATE mysql.user SET Password='westos' WHERE User='root';
MariaDB [(none)]> SELECT * FROM mysql.user;
如果使用以下命令,便可以在文件内看到密码(建议用这种,加密方式是把密码变成加密字符):
MariaDB [(none)]> UPDATE mysql.user SET Password=Password
MariaDB [(none)]> SELECT * FROM mysql.user;
<3>查看mysql有关的进程id(其中8218是这个命令的进程)
[root@dns-server mysql]# ps aux | grep mysql
<4>杀死mysql的所有进程
[root@dns-server mysql]# kill -9 8019
[root@dns-server mysql]# kill -9 8174
[root@dns-server mysql]# ps aux | grep mysql
<5>打开数据库
[root@dns-server mysql]# systemctl start mariadb ##此时mysql是非正常的,所以要重启
<6>试图用更改前的密码和更改后的密码进行登陆数据库,发现密码更改成功
[root@dns-server mysql]# mysql -uroot -pbai
[root@dns-server mysql]# mysql -uroot -pwestos
4.使用phpMyAdmin管理MYSQL数据库
<1>首先安装httpd并重启服务
[root@dns-server mnt]# yum install httpd -y
[root@dns-server mnt]# systemctl restart httpd
<2>打开网页输入本机的ip地址,发现可以查看到阿帕奇的浏览器
<3>将下载好的安装包(要适合自己的主机)进行解压并放至/var/www/html文件下
[root@dns-server mnt]# tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 -C /var/www/html
[root@dns-server mnt]# cd /var/www/html
[root@dns-server html]# ls
<4>将安装包的名字更改成简单点的名字并查看,以便于方便利用
[root@dns-server html]# mv phpMyAdmin-3.4.0-all-languages mysqladmin
[root@dns-server html]# ls
<5>打开网页输入本机的ip地址加文件的绝对目录,可以查看到文件中详细的内容
<6>点开文件内的index.php(默认发布文件,直接访问便可以查看),发现显示的是代码(并不安全),说明系统中不具备时别php语言的软件
<7>安装可以识别php语言的软件并重启mariadb
[root@dns-server html]# yum install php-mysql -y
[root@dns-server html]# systemctl restart httpd
[root@dns-server html]# yum install php -y
[root@dns-server html]# systemctl restart httpd
[root@dns-server mysqladmin]# systemctl restart mariadb
<8>打开网页输入本机的ip地址加文件的绝对目录,可以查看到一个真正的网页(如果没出来,可以按下ctrl+shift+delete清除缓存既可)
<9>使用超级用户进行登陆
利用鼠标点击在软件中创建一个名为bai的库,名为test的表,并在表中添加内容
点击如下:
<10>在终端利用命令进行查看,发现之前所建立的都可以成功显示
[root@dns-server mysqladmin]# mysql -uroot -p
MariaDB [(none)]> SHOW DATABASES;
MariaDB [(none)]> USE bai;
MariaDB [bai]> SHOW TABLES;
MariaDB [bai]> SELECT * FROM bai.test;
补充:
如果登陆失败
-1-进入mysqladmin目录下,根据模板,创建config.inc.php
[root@dns-server html]# cd mysqladmin
[root@dns-server mysqladmin]# cp config.sample.inc.php config.inc.php
-2-查找$cfg[‘blowfish_scret’]的值
[root@dns-server mysqladmin]# vim README ##在文件中可以看到如果要查看更多消息,进入Documentation.txt文件
[root@dns-server mysqladmin]# vim Documentation.txt
查看README中的引导:
Documentation.txt中的值:
-3-将查找到的值写进文件中并使其httpd和mariadb重新生效,便可以成功登陆
[root@dns-server mysqladmin]# vim config.inc.php
[root@dns-server mysqladmin]# systemctl restart httpd
[root@dns-server mysqladmin]# systemctl restart mariadb
config.inc.php文件中的添加的值如下:
总的总结:
1.oracle最稳定的数据库(核心数据中心用的都是他)电脑单核是1倍的价钱,双核是2倍的价钱,四核是4倍的价钱
2.表->许多张表叫库->许多库叫数据库软件
3.linux中一般用mariadb
4.每个命令都必须用分号结尾(用大写写比较专业,小写写也可以,所有的数据库大写是通用的,小写有些不适用
5.表相当于文件,库相当于目录
6.值要用引号括起来
7.表的名称数据库的名称最好不要更改