数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。 简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作
[root@shareserver ~]# 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 30676/mysqld
root@base3 ~]# mysql -uroot # 直接就可以登录,没有密码
MariaDB [ (none) ] > SHOW DATABASES; # 查看所有数据库
!!!数据库命令格式一般是大写,小写也可以(不提倡),命令完成后必须加分号
直接登录,没有密码。这样是不安全的,所以我们现在来设置密码
[root@shareserver ~]# mysql_secure_installation # 安全初始化
Enter current password for root (enter for none): # 输入密码,因为没有密码,所以直接按回车即可
Set root password? [Y/n] y # 是否要设定root用户的密码
New password: # 输入新密码
Re-enter new password: # 再次输入新密码
Password updated successfully! #设置成功
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@shareserver ~]# vim /etc/my.cnf # 隐藏端口
skip-networking=1 # 开启跳过网络接口功能即关闭mysql的网络接口
[root@shareserver ~]# systemctl restart mariadb # 重启服务
[root@shareserver ~]# netstat -antlup | grep mysql # 此时就查看不到端口了
[root@shareserver ~]# 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 tom; # 创建数据库
MariaDB [mysql]> SHOW DATABASES; # 查看创建成功
MariaDB [mysql]> USE tom; # 进入创建的数据库
MariaDB [tom]> CREATE TABLE classlist( # 给新建的数据库建立表
-> username varchar(10) not null, #(10) 10个字符
-> passwd varchar(10) not null
-> );
MariaDB [tom]> SHOW TABLES;
MariaDB [tom]> DESC classlist; # 查看表结构
MariaDB [tom]> INSERT INTO classlist VALUES ('file','111'); # 往表里添加内容,file为username列,111weipasswd列
MariaDB [tom]> INSERT INTO classlist VALUES ('file2','222');
MariaDB [tom]> SELECT * FROM classlist; # 查看表中所有内容
MariaDB [tom]> ALTER TABLE classlist RENAME redhat; # 更改表名称
MariaDB [tom]> SHOW TABLES; # 查看表
MariaDB [tom]> ALTER TABLE redhat RENAME classlist; # 把表名称改回来
MariaDB [tom]> ALTER TABLE classlist ADD size varchar(2); # 给表中添加size这个属性,默认添加的时候添加到最后一项
MariaDB [tom]> SELECT * FROM classlist;
MariaDB [tom]>UPDATE classlist SET size="ma" WHERE username='file2';
MariaDB [tom]>UPDATE classlist SET size="mi" WHERE username='file';
MariaDB [tom]> SELECT * FROM classlist;
MariaDB [tom]> ALTER TABLE classlist ADD sex varchar(10) AFTER username; # 指定插入的位置,插到username后面
MariaDB [tom]> SELECT * FROM classlist; # 查看classlist这个表格
MariaDB [tom]> DROP TABLE classlist; # 删除classlist这个表
MariaDB [tom]> SHOW TABLES;
Empty set (0.00 sec)
MariaDB [tom]> DROP DATABASE tom; # 删除 userdate这个数据库
MariaDB [(none)]> SHOW DATABASES; # 没有userdate这个库了
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 'file'; #新建用户ting,密码为file
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;
[root@base3 ~]# mysql -uting -p
Enter password:
MariaDB [(none)]> SELECT * FROM userdate.classlist; # 可以查看
Empty set (0.00 sec)
MariaDB [(none)]>USE userdate
MariaDB [userdate]> CREATE TABLE tom(
-> 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这个用户
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; # 如果更改没生效,就刷新一下
[root@shareserver ~]# mysqldump -uroot -p1234 --all-databases > /mnt/alldata # 备份所有数据库到/mnt/alldata中
## -uroot=root用户 -p1234=root用户的密码
[root@shareserver ~]# mysqldump -uroot -p1234 --all-databases --no-data > /mnt/nodata # 备份所有数据库到/mnt/nodata中,但是不包含数据
[root@shareserver ~]# mysqldump -uroot -p1234 userdate > /mnt/userdata.sql # 备份userdate这个数据库到 /mnt/userdata.sql中
如果某个数据库不小心被我们弄丢了,但是我们有备份,那么怎么恢复呢?
[root@shareserver ~]# mysql -uroot -p1234 -e "DROP DATABASE userdate;" # 模拟数据库丢失
[root@shareserver ~]# mysql -uroot -p1234 userdate < /mnt/userdata.sql # 直接恢复,会报错,因为userdate这个库已经被我删除了,所以名字不能被识别
ERROR 1049 (42000): Unknown database 'userdate'
[root@shareserver ~]# mysql -u1234 -p # 登陆数据库
Enter password:
MariaDB [(none)]> CREATE DATABASE userdate; # 创建一个和之前同名的数据库
MariaDB [(none)]> QUIT
[root@shareserver ~]# mysql -u1234 -pting userdate < /mnt/userdata.sql # 成功恢复
[root@shareserver ~]# vim /mnt/userdata.sql
21 CREATE DATABASE userdate; # 创建数据库
22 USE userdate; # 进入数据库
[root@shareserver ~]# mysql -uroot -p1234 < /mnt/userdata.sql # 成功恢复
知道自己密码的时候修改密码:
[root@shareserver ~]# mysqladmin -uroot -p1234 password file # 这个命令可以直接更改数据库超级用户密码
-uroot=root用户 -p1234=root用户的密码 修改密码为file
假如我们忘记了密码,找回密码:
[root@shareserver ~]# systemctl stop mariadb # 关掉数据库
[root@shareserver ~]# mysqld_safe --skip-grant-tables & # 输入这个命令之后,就会出现下面的界面,直接按回车即可
[root@shareserver ~]# 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'; # 重新以这种方式更新密码,这样密码就是加密的了
# Password=Password('redhat') # 密码是以密文显示
MariaDB [(none)]> SELECT User,Password FROM mysql.user; #查看结果
查看mysql的所有进程,并结束掉
打开数据库服务
[root@shareserver ~]# systemctl start mariadb # 开启服务
密码修改成功
[root@shareserver ~]# mysql -uroot -p 或者直接 mysql -uroot -predhat ## redhat为密码
[root@shareserver ~]# yum install httpd -y # 安装httpd服务
打开http服务
[root@shareserver ~]# systemctl start httpd # 打开http服务
[root@shareserver html]# ls # 从网上下载一个phpMyAdmin压缩包
phpMyAdmin-2.11.3-all-languages.tar.bz2
[root@shareserver html]# tar -jxf phpMyAdmin-2.11.3-all-languages.tar.bz2 # 解压
[root@shareserver html]# ls # 会解压出一个文件
phpMyAdmin-2.11.3-all-languages phpMyAdmin-2.11.3-all-languages.tar.bz2
[root@shareserver html]# rm -fr phpMyAdmin-2.11.3-all-languages.tar.bz2 # 这个压缩包已经没有用了,可以删除
[root@shareserver html]# mv phpMyAdmin-2.11.3-all-languages/ mysqladmin # 给文件改一个简单的名字
[root@shareserver html]# ls
mysqladmin
打开浏览器,通过访问mysqladmin,发现,他把所有网页信息都暴露出来了,这不安全。
[root@shareserver html]# yum install -y php # 安装php
[root@shareserver html]# systemctl restart httpd # 重启http服务
查看php支持的服务,并没有mysql
[root@shareserver html]# php -m # 查看php支持的服务,并没有mysql
[root@shareserver html]# systemctl restart httpd
[root@shareserver html]# cd mysqladmin/
[root@shareserver mysqladmin]# less README # 查看帮助 q退出
[root@shareserver mysqladmin]# less Documentation.txt
[root@shareserver mysqladmin]# cp config.sample.inc.php config.inc.php
[root@shareserver mysqladmin]# vim config.inc.php
[root@shareserver mysqladmin]# systemctl restart httpd
root@shareserver mysqladmin]# systemctl restart mariadb
有时候界面出不来是因为缓存的原因,清楚所有缓存。
以root用户身份输入密码登录数据库
创建数据库jiege
在数据库hui中建立表shujuku
在表中添加属性
插入相应的属性值