数据库(Database)是按照数据结构来组织、存储和管理数据的,是建立在计算机存储设备上的仓库。简单来说是本身可视为电子化的文件柜------存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
1、rpm安装部署
[root@rhel93 ~]# yum install mysql-server -y
[root@rhel93 ~]# ll /etc/my.cnf
-rw-r--r--. 1 root root 202 3月 28 2022 /etc/my.cnf
[root@rhel93 yum.repos.d]# ll /etc/my.cnf.d/
总用量 8
-rw-r--r--. 1 root root 295 3月 28 2022 client.cnf
-rw-r--r--. 1 root root 612 3月 23 2023 mysql-server.cnf
[root@rhel93 ~]# grep ^[^#] /etc/my.cnf.d/mysql-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
[root@rhel93 ~]# systemctl start mysqld
#查看临时密码,rpm安装的默认是空密码,其它安装方式使用如下命令查看密码
[root@rhel93 ~]# grep password /var/log/mysql/mysqld.log
2、连接数据库
2.1 本地连接访问
[root@rhel93 ~]# mysql -uroot -p
Enter password: #在此直接回车,不用输入密码,因为是空密码
mysql>
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin123';
mysql> exit
#使用密码登录
[root@rhel93 ~]# mysql -uroot -padmin123
2.2 用户授权
mysql> create user xiaoming@'%' identified by '123';
mysql> grant all privileges on *.* to 'xiaoming'@'%';
#本地验证可以登录
[root@rhel93 ~]# mysql -uxiaoming -p123
#关闭防火墙
[root@rhel93 ~]# systemctl disable --now firewalld
#如果需要使用rhel7版本镜像中的mysql登录该版本mysql-server,需要设定密码插件为mysql_native_password
mysql> create user 'rep'@'%' identified WITH mysql_native_password by '123';
mysql> grant all privileges on *.* to 'rep'@'%';
2.3 远程登录验证权限
#安装客户端mysql指令
[root@rhel79 yum.repos.d]# yum install mysql -y
[root@rhel79 ~]# mysql -uxiaoming -p123 -h 192.168.168.197
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
[root@rhel79 ~]# mysql -urep -p123 -h 192.168.168.197
MySQL [(none)]> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| rep | % |
| xiaoming | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
#查看当前的登录账号
MySQL [(none)]> select user();
+---------------------+
| user() |
+---------------------+
| rep@192.168.168.198 |
+---------------------+
回收权限
mysql> revoke all on *.* from xiaoming;
Query OK, 0 rows affected (0.00 sec)
mysql> revoke all on *.* from rep@'%';
2.4 修改客户端提示符
[root@rhel93 ~]# vim /etc/my.cnf.d/client.cnf
[client]
prompt=mysql8 [\\d]>
[root@rhel93 ~]# mysql -uroot -padmin123
mysql8 [(none)]>use chap03;
mysql8 [chap03]>
3、mysql库表操作
3.1 mysql库操作
mysql> show databases;
mysql> show databases like '__s%';
mysql> create database chap03;
mysql> drop database chap03;
mysql> use mysql
mysql> select database();
mysql> show tables from mysql;
3.2 mysql表操作
mysql> use chap03
mysql> create table t1(id int,name char(30));
mysql> desc t1;
mysql> drop table t1;
增删改查数据
mysql> insert t1 values (1,'xiaoming');
mysql> insert into t1(id,name) values (5,'xiaolv'),(6,'xiaobai');
mysql> select * from t1;
+------+----------+
| id | name |
+------+----------+
| 1 | xiaoming |
| 5 | xiaolv |
| 6 | xiaobai |
+------+----------+
mysql> delete from t1 where id=1;
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+------+---------+
| id | name |
+------+---------+
| 5 | xiaolv |
| 6 | xiaobai |
+------+---------+
mysql> update t1 set id=1 where id=5;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from t1;
+------+---------+
| id | name |
+------+---------+
| 1 | xiaolv |
| 6 | xiaobai |
+------+---------+
4、数据库的备份和还原
备份整个数据库的所有表
[root@rhel93 ~]# mysqldump -uroot -padmin123 --all-databases > /mysql/mysql-all.backup
#删除库
[root@rhel93 ~]# mysql -uroot -padmin123
mysql> drop database chap03;
mysql> select * from chap03.t1;
#恢复后查看
[root@rhel93 ~]# mysql -uroot -padmin123 < /mysql/mysql-all.backup
[root@rhel93 ~]# mysql -uroot -padmin123
mysql> select * from chap03.t1;
+------+---------+
| id | name |
+------+---------+
| 5 | xiaolv |
| 6 | xiaobai |
+------+---------+
2 rows in set (0.00 sec)
只备份表
[root@rhel93 ~]# mysqldump -uroot -padmin123 chap03 t1 > /mysql/mysql-t1.backup
#测试
mysql> drop table chap03.t1;
#恢复数据
[root@rhel93 ~]# mysql -uroot -padmin123
mysql> use chap03
mysql> source /mysql/mysql-t1.backup
mysql> select * from t1;
+------+---------+
| id | name |
+------+---------+
| 5 | xiaolv |
| 6 | xiaobai |
+------+---------+