# 什么是数据库?
```
数据库是存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除操作,它能为多个用户共享,具有尽可能小的冗余的特点,是与应用程序彼此独立的数据集合。
简而言之,数据库是某种约定的数据结构高效的存储数据,并在用户需要时通过检索展现给用户。
```
# 如何安装数据库
## 1.安装数据库
```
第一步:apt install mariadb-server #安装服务
```
## 1.1 连接数据库
```
第一步:mysql -u root -p #在本地使用root用户登录数据库
第二步:Enter password: #在这里输入root密码
第三步:exit; #退出数据库
```
## 1.2 查看数据库端口
```
第一步:apt install net-tools #安装检测端口命令
第二步:netstat -ntupl | grep mysql #查看运行端口,过滤mysql
```
##### 效果展示

## 1.3 查看mysql服务是否运行
```
第一步:systemctl status mysql #查看服务状态信息
```
##### 效果展示
![效果图1][1]
## 1.4 重启、停止、启动Mysql服务
```
第一步:systemctl restart mysql #重启服务
第二步:systemctl stop mysql #停止服务
第三步:systemctl start mysql #启动服务
```
## 1.5 查看mysql默认存放路径
```
第一步:cd /var/lib/mysql #进入指定路径
第二步:ls #查看当前路径下的文件及目录
```
##### 效果展示
![效果图2][2]
# Mysql默认端口号
```
3306
```
# 默认数据库主配置文件位置
```
vim /etc/mysql/mariadb.conf.d/50-server.cnf
```
# 如何允许mysql远程连接
## 2.配置允许访问权限
## 2.1允许指定用户远程访问mysql
```
第一步:mysql -u root -p #使用root用户登录本地数据库
第二步:use mysql; #连接到mysql库
第三步:grant all privileges on *.* to 'user01'@'%' identified by 'Skills39' with grant option;
#配置远程访问权限,user01是远程登录使用的用户名,Skills39是远程登录使用的密码, %允许远程所有IP访问,如果需要指定IP,使用IP代替%。
第四步:flush privileges; #使配置文件生效
第五步:select host,user from user; #查看用户表
第六步:exit; #退出数据库
第七步:vim /etc/mysql/mariadb.conf.d/50-server.cnf #打开配置文件
第八步:找到28行进行注释
#bind-address = 127.0.0.1
第九步:systemctl restart mysql #重启服务
```
##### 效果展示
![效果图3][3]
## 测试
```
第一步:apt install mariadb-client #安装客户端
第二步:mysql -h 192.168.10.1 -u user01 -p #-h 指定IP -u 指定用户 -p 指定密码
```
##### 效果展示
![效果图4][4]
## 2.2 允许使用root用户访问mysql
```
第一步:mysql -u root -p #使用root用户登录本地数据库
第二步:use mysql; #连接到mysql库
第三步:update user set plugin='' where user='root'; #指定默认登录用户为root
第四步:flush privileges; #使配置生效
第五步:update user set password=password('Skills39') where user='root'; #设置密码
第六步:flush privileges; #使配置生效
第七步:update user set host='%' where host='localhost' and user='root' #设置本地登录变成允许所有人登录
第八步:flush privileges; #使配置生效
第九步:select host,user from user; #查看用户表
第十步:vim /etc/mysql/mariadb.conf.d/50-server.cnf #打开配置文件
第十一步:找到28行进行注释
#bind-address = 127.0.0.1
第十二步:systemctl restart mysql #重启服务
```
## 测试
```
第一步:apt install mariadb-client #安装客户端
第二步:mysql -h 192.168.10.1 -u root -p #-h 指定IP -u 指定用户 -p 指定密码
```
##### 效果展示
![效果图5][5]
## 2.3 删除远程访问
````
第一步:mysql -u root -p #进入数据库
第二步:use mysql; #切换数据库
第三步:select host,user from user; #查看用户表
第四步:delete from user where user='user01'; #删除user01用户
第五步:select host,user from user; #查看用户表
第六步:update user set host='localhost' where host='%' and user='root'; #将%修改为localhost 指定用户为root
第七步:select host,user from user; #查看用户表
````
##### 效果展示
![效果图6][6]
# 创建数据库
```
第一步:mysql -u root -p #指定root登录本地数据库
第二步:create database yu; #创建数据库名
第三步:show databases; #查看数据库
```
##### 效果展示
```
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| yu |
+--------------------+
4 rows in set (0.000 sec)
#显示服务器上所有数据库,除yu外,其他的数据库是mysql 安装时就有的,其中包含了mysql的一些架构和参数,不要删除他们。
```
## 删除数据库
```
第一步:mysql -u root -p #登录数据库
第二步:show databases; #查看数据库
第三步:drop database yu; #删除yu数据库
第四步:show databases; #查看数据库
```
## 备份数据库
```
第一步:mysql -u root -p #登录数据库
第二步:create database yu; #创建yu数据库
第三步:exit; #退出数据库
第四步:mysqldump -u root -p yu>~/yu.1 #使用mysqldump将yu数据库备份到当前用户家目录下,命名为yu.1
mysqldump -u {可连接到数据库的用户} -p {要备份的库名称}>{存放在系统中的位置}
```
## 还原数据库
```
第一步:mysql -u root -p #登录数据库
第二步:create database yus; #创建数据库
第三步:exit; #退出
第四步:mysql -u root -p yus>./yu.1 #将yu.1的数据库内容还原到yus数据库中
```
## 使用create table命令创建数据表
```
第一步:mysql -u root -p #登录数据库
第二步:create database yu #创建yu数据库
第三步:use yu #进入yu数据库
第四步:create table t1 (uid int, uname char(30) ) engine=innodb charset=utf8;
语法说明:
create table [表名] ([表头第一列] [数据类型], [表头第二列] [数据类型],...) engine=[表使用的引擎] charset=[表使用的字符集];
#t1是表名称,后面的小括号中,声明了两列,用逗号分隔每一列,每一列表头名称和数据类型组成,第一列表头名称是uid,数据类型是整类,第二列表名称是unmae,数据类型是可以存储30个字符的固定长度字符串,关于数据类型。
#表头,表格的最上面一行,比如说“姓名/性别/籍贯”,下面每一行都可以填写一个人的信息
#表引擎决定表数据的存储方式
#表的字符集决定了表可以存储字符的种类,本例是用来 utf8(UCS Transfer Format 8)
```
## 查看表
```
第一步:show tables;
+--------------+
| Tables_in_yu |
+--------------+
| t1 |
| ti |
+--------------+
2 rows in set (0.000 sec)
```
## 查看表数据
```
第一步:desc t1;
MariaDB [yu]> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| uid | int(11) | YES | | NULL | |
| uname | char(30) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.001 sec)
#Field 每一列表头名称
#Type 对应这一列的数据类型
#Null 这一列字段是否能成为NULL,默认字段能成为NULL
#key 索引信息,没创建索引就为空
#Default 是否设置了默认值,Null表示没有设置默认值
#Extra 追加属性
```
## 使用alter table命令修改数据表
## 语法
```
alter table [表名] add [列头名称] [此列允许的数据类型];
```
## 新增列
```
第一步:alter table t1 add age tinyint unsigned; #新增一列
#给t1表增加一列,列头名称为age ,数据类型为tinyint unsigned 能存储证书范围为0-255
第二步:desc t1; #查看表数据
```
## 最前列
```
第一步:alter table t1 add username01 tinyint unsigned first; #在最前列添加一个列
第二步:desc t1; #查看表数据
```
## 某列后面
```
第一步:alter table t1 add user02 tinyint usigned after uid; #在uid列后面新增一列
第二步:desc t1; #查看表数据
```
## 修改表字符编码
##### 语法
```
alter table [表名] convert to character set [编码名];
```
```
第一步:show create table t1 \G #显示建表语法 \G精简输出
第二步:alter table t1 convert to character set gbk; 修改字符编码
第三步:show create table t1 \G #显示建表语法 \G精简输出
```
##### 效果展示
![效果图7][7]
## 重命名表头字段名称
## 语法
```
alter table [表名] change [原列名] [新列名] [新列类型];
```
```
第一步:desc t1; #查看表数据
第二步:alter table t1 change uid id int; #将uid 修改成id
第三步:desc t1; #查看表数据
```
##### 效果展示
![效果图8][8]
## 如何使用drop table命令删除数据表
```
第一步:show tables; 查看表
第二步:drop table t1; #删除t1表
```
## MySQl 如何重命名表
## 语法
```
rename table [原表名] to [新表名]
```
```
第一步:show tables; #查看表
第二步:rename table ti to t1; #将ti修改成t1
第三步:show tables; #查看表
```
##### 效果展示
![效果图9][9]
## Mysql主从复制
## 主
```
第一步:apt install mariadb-server #安装服务
第二步:mysql -u root -p #本地登录数据库
第三步:grant replication slave on *.* to user01@'%' identified by 'Skills39'; #创建用户并设置密码
第四步:flush privileges; #授权远程登录
第五步:exit; #退出
第六步:vim /etc/mysql/mariadb.conf.d/50-server.cnf #打开配置文件
注释第28行 (图一)
73-74行取消注释 (图二)
保存退出
第七步:systemctl restart mysql #重启服务
```
![1][10]
![2][11]
## 从
```
第一步:apt install mariadb-server #安装服务
第二步:vim /etc/mysql/mariadb.conf.d/50-server.cnf #打开配置文件
注释第28行 (图一)
73-74行取消注释 (图二)
将73行的server-id =1 修改成 server-id =2
第三步:systecmt restart mysql #重启服务
第四步:mysql -u root -p #登录数据库
第五步:change master to
master_host='主库IP地址',
master_port=3306,
master_user='user01',
master_password='Skills39';
第六步:start slave; #开启slave服务
第七步:show slave status \G; #出现两个yes即为成功
```
![3][12]
![4][13]
效果展示
![14][14]
[1]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007143530.jpeg
[2]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007143629.jpeg
[3]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007143718.jpeg
[4]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007143745.jpeg
[5]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007143815.jpeg
[6]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007143845.jpeg
[7]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007143924.jpeg
[8]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007143953.jpeg
[9]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007144021.jpeg
[10]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007144050.jpeg
[11]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007144105.jpeg
[12]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007144130.jpeg
[13]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007144150.jpeg
[14]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007144222.jpeg
两个YES代表成功
最后修改:2021 年 10 月 07 日
© 允许规范转载