linux 之 数据库的安装部署

什么是数据库?

      简单的说,数据库(英文Dtabase)就是一个存放数据的仓库,这个仓库是按照一定的数据
 结果(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的、我们可以通过数据库提
 供的多种方法来管理数据库里的数据更简单的形象理解,数据库和我们生活中存放杂物的仓库性质
 一样,区别只是存放的东西不同。

1.安装数据库

[root@base3 ~]# yum install -y mariadb-server  # redhat7的数据库安装包是这个
[root@base3 ~]# systemctl start mariadb.service
[root@base3 ~]# netstat -antlp | grep mysql   # 查看端口,可以查看到,说明端口暴露在外
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      4491/mysqld 
[root@base3 ~]# mysql -uroot   # 直接就可以登录,没有密码

MariaDB  [ (none) ] > SHOW DATABASES;   #  查看所有数据库

在这里插入图片描述

这样是不安全的,所以我们现在来设置密码

2.数据库的安全初始化

[root@base3 ~]# mysql_secure_installation   # 安全初始化

Enter current password for root (enter for none):   # 输入密码,因为没有密码,所以直接按回车即可 

Set root password? [Y/n] y   # 是否要设定root用户的密码

New password: Re-enter new password: Remove anonymous users? [Y/n] y  # 是否要删除匿名用户

Disallow root login remotely? [Y/n] y # 是否要删除root用户的远程登录功能

Remove test database and access to it? [Y/n]  # 是否要删除test数据库

Reload privilege tables now? [Y/n] y  # 是否重载表格

[root@base3 ~]# vim /etc/my.cnf  # 隐藏端口
10 skip-networking=1   # 开启跳过网络接口功能即关闭mysql的网络接口
[root@base3 ~]# systemctl restart mariadb
[root@base3 ~]# netstat -antlup | grep mysql  # 此时就查看不到端口了

3.数据库的增删改查

[root@base3 ~]# mysql -uroot -p  # 用密码登录数据库

Enter password: 
MariaDB [(none)]> SHOW DATABASES;	

在这里插入图片描述

MariaDB [(none)]> USE mysql;          # 进入mysql这个数据库
MariaDB [mysql]> SHOW TABLES;   # 显示mysql数据库中所有的表格

在这里插入图片描述

MariaDB [mysql]> SELECT Host,User,Password  FROM user;	 # 查看表中的内容,只显示 Host,User,Password这三列数据

在这里插入图片描述

MariaDB [mysql]> CREATE DATABASE userdate;  # 创建数据库
MariaDB [mysql]> SHOW DATABASES;   # 查看创建成功

在这里插入图片描述

MariaDB [mysql]> USE userdate;    # 进入创建的数据库
MariaDB [userdate]> CREATE TABLE classlist(      # 给新建的数据库建立表
-> username varchar(10) not null,    
-> passwd  varchar(10) not null,
-> );
MariaDB [userdate]> SHOW TABLES;

在这里插入图片描述

MariaDB [userdate]> DESC classlist;   # 查看表结构

在这里插入图片描述

MariaDB [userdate]> INSERT INTO classlist VALUES ('tom','111');  # 往表里添加内容
MariaDB [userdate]> INSERT INTO classlist VALUES ('lily','222');
MariaDB [userdate]> SELECT * FROM classlist;	  # 查看表中所有内容

在这里插入图片描述

MariaDB [userdate]> ALTER TABLE classlist RENAME westos;  # 更改表名称	
MariaDB [userdate]> SHOW TABLES;   # 查看表	

在这里插入图片描述

MariaDB [userdate]> ALTER TABLE westos RENAME classlist;  # 把表名称改回来
MariaDB [userdate]> ALTER TABLE classlist ADD sex varchar(2);   # 给表中添加sex这个属性,默认添加的时候添加到最后一项
MariaDB [userdate]> SELECT * FROM classlist;

在这里插入图片描述

MariaDB [userdate]>UPDATE classlist SET sex="woman" WHERE  username='lily';
MariaDB [userdate]>UPDATE classlist SET sex="man" WHERE  username='tom';
MariaDB [userdate]> SELECT * FROM classlist;	

在这里插入图片描述

MariaDB [userdate]> ALTER TABLE classlist ADD sex varchar(10) AFTER username;   # 指定插入的位置
MariaDB [userdate]> SELECT * FROM classlist;	

在这里插入图片描述

MariaDB [userdate]> DROP TABLE classlist;    # 删除classlist这个表
MariaDB [userdate]> SHOW TABLES;
Empty set (0.00 sec)
MariaDB [userdate]> DROP DATABASE userdate;   # 删除 userdate这个数据库
MariaDB [(none)]> SHOW DATABASES;   # 没有userdate这个库了

在这里插入图片描述

4.数据库的用户授权

MariaDB [(none)]> CREATE DATABASE userdate;
MariaDB [(none)]> USE userdate;
MariaDB [userdate]> CREATE TABLE classlist(    
-> username varchar(10) not null,    
-> passwd  varchar(10) not null,    
-> sex varchar(10) not null
-> );
MariaDB [userdate]>  CREATE USER ting@localhost identified by 'ting';  #新建用户
MariaDB [userdate]> SELECT User,Host FROM mysql.user;    # 查看用户

在这里插入图片描述

MariaDB [userdate]> SHOW GRANTs FOR ting@localhost;    # 查看ting这个本地用户的权限,可以看到权限为空

在这里插入图片描述

MariaDB [userdate]> GRANT SELECT on userdate.* TO ting@localhost;  # 把select这个权限给ting@localhost这个用户
MariaDB [userdate]> SHOW GRANTs FOR ting@localhost;

在这里插入图片描述

MariaDB [userdate]> GRANT SELECT on userdate.* TO ting@localhost;  # 把select这个权限给ting@localhost这个用户
MariaDB [userdate]> SHOW GRANTs FOR ting@localhost;

在这里插入图片描述

重新打开一个shell用创建的ting这个用户登录数据库

[root@base3 ~]# mysql -uting -p 
Enter password: 
MariaDB [(none)]> SELECT * FROM userdate.classlist;  # 可以查看
Empty set (0.00 sec)
MariaDB [userdate]> CREATE TABLE student( 
-> username varchar(10) not null,
-> passwd  varchar(10) not null, 
-> sex varchar(10) not null
-> );

ERROR 1142 (42000): CREATE command denied to user 'ting'@'localhost' for table 'student'

在这里插入图片描述

回到超级用户登录窗口

MariaDB [userdate]> GRANT CREATE on userdate.* TO ting@localhost;  #把create这个权限给ting@localhost这个用户	

在这里插入图片描述

在ting@localhost用户登录窗口

MariaDB [userdate]> CREATE TABLE familylist( 
-> username varchar(10) not null,	
-> passwd  varchar(10) not null, 
-> sex varchar(10) not null
-> );                     # 在userdate库中创建表格

MariaDB [userdate]> DESC familylist;   # 查看表格

在这里插入图片描述

回到超级用户登录窗口

MariaDB [userdate]> REVOKE SELECT,CREATE on userdate.* from ting@localhost;  # 撤销所有权限
MariaDB [userdate]> FLUSH PRIVILEGES;  # 如果更改没生效,就刷新一下

5.备份数据库

[root@base3 ~]# mysqldump -uroot -pting --all-databases > /mnt/alldata  # 备份所有数据库到/mnt/alldata中
[root@base3 ~]# mysqldump -uroot -pting --all-databases --no-data > /mnt/nodata   # 备份所有数据库到/mnt/nodata中,但是不包含数据
[root@base3 ~]# mysqldump -uroot -pting userdate > /mnt/userdata.sql  # 备份userdate这个数据库到 /mnt/userdata.sql中

如果某个数据库不小心被我们弄丢了,但是我们有备份,那么怎么恢复呢?

[root@base3 ~]# mysql -uroot -pting -e "DROP DATABASE userdate;"   # 模拟数据库丢失
方法一:
[root@base3 ~]# mysql -uroot -pting userdate  < /mnt/userdata.sql  # 直接恢复,会报错,因为userdate这个库已经被我删除了,所以名字不能被识别
ERROR 1049 (42000): Unknown database 'userdate'
[root@base3 ~]# mysql -uroot -p  # 登陆数据库
Enter password: 
MariaDB [(none)]> CREATE DATABASE userdate;  # 创建一个和之前同名的数据库
MariaDB [(none)]> QUIT
[root@base3 ~]# mysql -uroot -pting userdate  < /mnt/userdata.sql   # 成功恢复 
方法2:
[root@base3 ~]# vim /mnt/userdata.sql  
21 CREATE DATABASE userdate;   # 创建数据库 
22 USE userdate;    # 进入数据库	
[root@base3 ~]# mysql -uroot -pting  < /mnt/userdata.sql  # 成功恢复	

6.超级用户的密码忘记了怎么办

[root@base3 ~]# mysqladmin -uroot -pting password root   # 这个命令可以直接更改数据库超级用户密码

假装我们忘记了密码,现在来找回密码

[root@base3 ~]# systemctl stop mariadb
[root@base3 ~]# mysqld_safe --skip-grant-tables &  # 输入这个命令之后,就会出现下面的界面,直接按回车即可

在这里插入图片描述

[root@base3 ~]# mysql   # 直接按回车进入数据库
MariaDB [(none)]> UPDATE mysql.user SET Password='redhat' WHERE User='root';   # 修改超级用户的密码为redhat
MariaDB [(none)]> SELECT User,Password FROM mysql.user;  # 查看mysql的用户时,发现密码都是明文的,这样太不安全了

在这里插入图片描述

MariaDB [(none)]> UPDATE mysql.user SET Password=Password('redhat') WHERE User='root';    # 重新以这种方式更新密码,这样密码就是加密的了
MariaDB [(none)]> SELECT User,Password FROM mysql.user;  #查看效果	

在这里插入图片描述

[root@base3 ~]# kill -9 5200
[root@base3 ~]# kill -9 5357
[root@base3 ~]# ps -aux | grep mysql  # 直到所有的进程都kill

在这里插入图片描述

[root@base3 ~]# systemctl start mariadb  # 启动mysql即可

7.web管理mysql

[root@base3 ~]# yum install -y httpd   # 下载httpd服务
[root@base3 ~]# systemctl start httpd
[root@base3 ~]# cd /var/www/html/
[root@base3 html]# ls                 # 从网上下载一个phpMyAdmin压缩包
phpMyAdmin-2.11.3-all-languages.tar.bz2
[root@base3 html]# tar  -jxf phpMyAdmin-2.11.3-all-languages.tar.bz2 # 解压
[root@base3 html]# ls   # 会解压出一个文件
phpMyAdmin-2.11.3-all-languages  phpMyAdmin-2.11.3-all-languages.tar.bz2
[root@base3 html]# rm -fr phpMyAdmin-2.11.3-all-languages.tar.bz2 # 这个压缩包已经没有用了,可以删除
[root@base3 html]# mv phpMyAdmin-2.11.3-all-languages/  mysqladmin # 给文件改一个简单的名字
[root@base3 html]# ls
mysqladmin
[root@base3 html]# systemctl stop firewalld

打开浏览器,通过访问mysqladmin,发现,他把所有网页信息都暴露出来了,这显然是不合适的,所以我们来解决这个问题

在这里插入图片描述

[root@base3 html]# yum install -y php
[root@base3 html]# systemctl restart httpd  

再次在浏览器上访问

在这里插入图片描述

[root@base3 html]# php -m   # 查看php支持的服务,并没有mysql
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
ereg
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
json
libxml
mhash
openssl
pcntl
pcre
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
tokenizer
xml
zip
zlib 
[Zend Modules] 
[root@base3 html]# yum install -y php-mysql   
[root@base3 html]# php -m     # 查看支持mysql服务

在这里插入图片描述

[root@base3 html]# cd mysqladmin/
[root@base3 mysqladmin]# less README  # 查看帮助

在这里插入图片描述

[root@base3 mysqladmin]# less Documentation.txt	

在这里插入图片描述

[root@base3 mysqladmin]# cp config.sample.inc.php config.inc.php
[root@base3 mysqladmin]# vim config.inc.php 

在这里插入图片描述

[root@base3 mysqladmin]# systemctl restart httpd
8.在浏览器上登陆管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

以上就是数据库的网页简单管理

猜你喜欢

转载自blog.csdn.net/wzt888_/article/details/84558586