文章目录
MariaDB(数据库)
MySQL数据库后来被oracle数据库收购了,但MySQL数据库作者写了个和MySQL一摸一样的数据库,名字为mariadb。
所以 mariadb和MySQL的使用基本上一摸一样。
mariadb的基本管理
mariadb的配置及使用
服务端需要安装mariadb-server服务,mariadb命令(服务端也可以当客户端用)
客户端仅需要mariadb即可
配置
- yum -y install mariadb-server mariadb
- 修改配置文件:vi /etc/my.cnf
添加一行指定数据库编码为utf8:character-set-server=utf8
从配置文件可以看到数据库存放目录为/var/lib/mysql,所以如果数据重要或偏多,可以单独外挂一个磁盘目录为/var/lib/mysql。
/var/lib/mysql目录中的数据实际上就是mysql里的 库 的数据:
cd /var/lib/mysql , ls看到的内容:
- 启动mariadb服务并开启自启:systemctl start mariadb , systemctl enable mariadb
- mariadb端口是3306,查看端口是否开启:netstat -ntulp | grep mysq
- 防火墙中开放mysql服务:firewall-cmd --add-service=mysql , firewall-cmd --add-service=mysq --permanent
基本配置就完成了
mysql使用及常用命令
-
登陆mysql语法:
mysql -u用户名 -p当前密码 -h服务器的ip(客户端才需要指定ip,并且服务端需要配置)
记住:选项和后面的值是没有空格的 -
不需要指定用户和么有密码直接输入mysql ,进入mysql的子系统:
在mysql中show databases; 看到的所有库 -
status :查看mysq详细
-
注:在mysql提示符下敲命令的时候,一般都要以 ; 或者 \G 结束,更多的时候使用 ; 结束,\G 一般用户格式化输出,如果没有以 ; 结束的话,系统就会认为命令没有完成,不执行。 凡事以 # 或者 – 开头的语句,都认为是注释。
以 ; 结尾
以 \G 结尾(会格式化并排版)
所以如果命令太长的话,可以任意的换行。
所谓的库–> 可以把她理解为 文件夹(担文件夹不能再建文件夹), 在这个库里,存有多个excel表格,这个excel表格就是我们所说的表。 -
查看当前所属库,为NULL就是当前不属于任何库:select database();
-
查看所有库:show databases;
-
进入到某个库: use 库名;
-
创建新的库:create databases 新建库名;
-
查询某个库的详细信息:show create database 需查询库名;
-
修改某个库的 编码:show create database 库名 character set 编码(charset=编码 亦可);
-
删除某个库: drop database 需删除的库名;
-
复制表:create table bb as select * from aa;
现在aa中的数据就复制到bb里了 -
复制表结构:create table cc like aa;
现在aa表的结构就复制到cc里了 -
复制表内容(一般用于复制表结构后使用)
insert into cc select * from aa;
现在aa表里的内容就复制到cc里了 -
查看mysql所有内置参数:show variables
注:如果需要调优mysql中的某些参数,查看后写入到配置文件中时,需要把下划线改为中横线,如:show variables list “%char%set%ser%”; (%是通配符,1个或多个)
写入配置文件中后,下划线变为中横线: -
…
-
上述只是 mysql最基本的使用,更加详细的参考博客:https://blog.csdn.net/cuichongxin/article/details/102580518
mariadb的用户管理
介绍
- 登陆mysql语法:
mysql -u用户名 -p当前密码 -h服务器的ip
记住:选项和后面的值是没有空格的
mysqladmin是操作系统命令。
mysql 进入子系统后
- 查看当前登陆用户:select user();
- 查看所有用户信息: desc mysql.user;
但只有前三项才需要关注,所以过滤一下:select user,host,password from mysql.user;
如:host字段指的是 允许这个用户可以从哪个客户端登陆。
[email protected] 这样才算是一个完整的用户
修改mysql用户密码
-
修改单独用户密码:
- 方法一:mysqladmin -uroot -p当前密码 password ‘新密码’
如果当前用户没有密码的话,-p 是可以不写的。 - 方法二:set password for 指定的用户=password(‘新密码’);
如果不需要指定用户:set password=password(‘新密码’);
- 方法三:update mysql.user set password=password(‘新密码’) where user=‘user用户名’ and host=‘host名’ ;
该方法有风险,如果where及后面的内容没写,就是修改所有表用户的密码了
利用该方法修改密码后,刷新一下 新密码才可以用:flush privileges;
- 方法一:mysqladmin -uroot -p当前密码 password ‘新密码’
-
修改所有用户的密码:update mysql.user set password=password(‘新密码’);
就是修改表的形式。
利用该方法修改密码后,刷新一下 新密码才可以用:flush privileges;
忘记密码后处理
比如 忘记了mysqlroot密码,需要重置该密码;
-
方法一:
vi /etc/my.cnf
在里面加入一行:skip-grant-tables
这样再次进入就相当于进入安全模式了,再次进入就不需要密码了
重启服务:systemctl restart mariadb
然后直接mysql即可进入系统,再次以当前无密码的方式设置密码即可:
注:安全模式不能以该方法修改,会报错:set password=password(‘新密码’);
只能以修改表方式:update mysql.user set password=password(‘新密码’) where user=‘root’ and host=‘localhost’; 然后刷新:flush privileges;
quit退出mysql,再次vi /etc/my.cnf,把skip-grant-tables删除或者注释掉
重启服务:systemctl restart mariadb 密码重置完成。 -
方法二:
先停止mariadb服务:systemctl stop mariadb
以安全模式进入mariadb:mysqld_safe --skip-grant-tables
此时当前窗口是无法做任何操作了,所以需要复制一个当前窗口,在新窗口中进入mysql系统便不需要密码了,然后在里面用表方式修改密码并刷新即可:
quit退出数据库。但此时,以安全模式进入mariadb的窗口是无法结束的,即使ctrl+c 也不行,只能通过kill杀死进程:killall -9 mysqld_safe
安全模式进入那窗口显示:
然后启动mariadb服务:systemctl start mariadb , 重置完成。
新建mysql用户
- 新建一个默认用户
create user 新建用户名;
- 删除默认用户
drop user 需删除用户名;
- 指定host创建用户
create user 用户名@‘host名称’;
- 删除指定host用户
drop user 用户名@‘host名称’;
- grant 创建用户说明
一般情况下是不建议使用create创建用户的,而是使用grant来创建用户,使用格式:
不带密码:grant p1(权限),p2,p3,… on 库.表 to 用户@IP(能登陆该用户ip) ;
带密码:grant p1(权限),p2,p3,… on 库.表 to 用户@IP(能登陆该用户ip) identified by ‘密码’;
其中,如果想要所有权限(p)则使用all 或 all privileges ,所有库和所有表使用 *
查看可使用权限(p),show privileges;
- grant 创建带密码用户
创建一个用户,权限只有select,能使用aa库中的所有表,只能200登陆,密码为redhait
grant 权限 on aa.* to 用户@ip identified by ‘密码’;
ip尾号为200的客户端使用tom用户登陆测试:
- grant 创建不带密码用户
也可以理解为给该用户添加权限;
grant 权限 on aa.* to 用户@ip;
- 回收grant创建的权限
revoke p1(权限),p2,… 库.表 from 用户名@IP;
备份及恢复
自带命令备份与恢复
-
备份分为热备份和冷备份
- 冷备份-脱机备份
备份的时候必须要吧数据库关闭,然后吧/var/lib/mysql里所有的数据拷贝走。 - 热备份-联机备份
在备份的时候是不需要关闭数据库。
备份工具有很多,有的是自带的,有的是第三方的。
+使用自带的命令备份:
mysqldump 可以备份一张表,可以备份多张表,也可以备份一个库
mysqldump 备份的时候,备份的并非是数据,而是把以前所有写的命令备份下来的了。
备份一张表,语法:mysqldump -u用户名 -p密码 库名 表名;
备份多张表,语法:mysqldump -u用户名 -p密码 库名 表名1 表名2 …;
备份库里的所有表,语法:mysqldump -u用户名 -p密码 库名;
备份库(包括里面所有表),语法:mysqldump -u用户名 -p密码 -B 库名;
注:如果直接执行备份命令,则是把内容打印到屏幕上,很多内容。 所以我们都是把这些文件放在某个文件里,如:mysqldump -u用户名 -p 库名 表名 > /mysql/1.sql
如:现在执行一个备份,把aa库里的aa表中的内容备份到/backup/aa.sql中:
注:备份的并不是具体数据,而是创建时使用的命令备份下来了
- 冷备份-脱机备份
-
恢复备份的内容
-
需要恢复的表必须在某个库里,如果不在某个库里恢复,则报错。
-
所以正确使用是,登陆到数据库后,进入到需要恢复备份的库,在执行恢复操作
如,现在要把备份的aa表中的内容恢复到aa库中:use aa; 执行恢复: source /backup/aa.sql;
然后show tables; 即可看到:
使用工具备份与恢复
-
这里以navicat for MySQL 为例
-
先登录
-
登陆成功后执行备份:
-
恢复备份
扩展知识
要查看数据库里的内容 不一定非得 登陆到数据库才能看到
也可以直接在linux操作系统中查看:mysql -u用户 -p密码 -e ‘命令;’
主要用于 写脚本,可以利用脚本来备份和恢复数据;