mariaDB(数据库)

时间:2024-03-16 15:22:12

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
    mariaDB(数据库)
    从配置文件可以看到数据库存放目录为/var/lib/mysql,所以如果数据重要或偏多,可以单独外挂一个磁盘目录为/var/lib/mysql。
    /var/lib/mysql目录中的数据实际上就是mysql里的 库 的数据:
    cd /var/lib/mysql , ls看到的内容:
    mariaDB(数据库)
  • 启动mariadb服务并开启自启:systemctl start mariadb , systemctl enable mariadb
    mariaDB(数据库)
  • mariadb端口是3306,查看端口是否开启:netstat -ntulp | grep mysq
    mariaDB(数据库)
  • 防火墙中开放mysql服务:firewall-cmd --add-service=mysql , firewall-cmd --add-service=mysq --permanent
    mariaDB(数据库)
    基本配置就完成了

mysql使用及常用命令

  • 登陆mysql语法:
    mysql -u用户名 -p当前密码 -h服务器的ip(客户端才需要指定ip,并且服务端需要配置)
    记住:选项和后面的值是没有空格的

  • 不需要指定用户和么有密码直接输入mysql ,进入mysql的子系统:
    mariaDB(数据库)
    在mysql中show databases; 看到的所有库
    mariaDB(数据库)

  • status :查看mysq详细
    mariaDB(数据库)

  • 注:在mysql提示符下敲命令的时候,一般都要以 ; 或者 \G 结束,更多的时候使用 ; 结束,\G 一般用户格式化输出,如果没有以 ; 结束的话,系统就会认为命令没有完成,不执行。 凡事以 # 或者 – 开头的语句,都认为是注释。
    以 ; 结尾
    mariaDB(数据库)
    以 \G 结尾(会格式化并排版)
    mariaDB(数据库)
    所以如果命令太长的话,可以任意的换行。
    所谓的库–> 可以把她理解为 文件夹(担文件夹不能再建文件夹), 在这个库里,存有多个excel表格,这个excel表格就是我们所说的表。

  • 查看当前所属库,为NULL就是当前不属于任何库:select database();
    mariaDB(数据库)

  • 查看所有库:show databases;
    mariaDB(数据库)

  • 进入到某个库: use 库名;
    mariaDB(数据库)

  • 创建新的库:create databases 新建库名;
    mariaDB(数据库)

  • 查询某个库的详细信息:show create database 需查询库名;
    mariaDB(数据库)

  • 修改某个库的 编码:show create database 库名 character set 编码(charset=编码 亦可);
    mariaDB(数据库)

  • 删除某个库: drop database 需删除的库名;
    mariaDB(数据库)

  • 复制表:create table bb as select * from aa;
    现在aa中的数据就复制到bb里了
    mariaDB(数据库)

  • 复制表结构:create table cc like aa;
    现在aa表的结构就复制到cc里了
    mariaDB(数据库)

  • 复制表内容(一般用于复制表结构后使用)
    insert into cc select * from aa;
    现在aa表里的内容就复制到cc里了
    mariaDB(数据库)

  • 查看mysql所有内置参数:show variables
    注:如果需要调优mysql中的某些参数,查看后写入到配置文件中时,需要把下划线改为中横线,如:show variables list “%char%set%ser%”; (%是通配符,1个或多个)
    mariaDB(数据库)
    写入配置文件中后,下划线变为中横线:
    mariaDB(数据库)

  • 上述只是 mysql最基本的使用,更加详细的参考博客:https://blog.csdn.net/cuichongxin/article/details/102580518

mariadb的用户管理

介绍

  • 登陆mysql语法:
    mysql -u用户名 -p当前密码 -h服务器的ip
    记住:选项和后面的值是没有空格的
    mysqladmin是操作系统命令。

mysql 进入子系统后

  • 查看当前登陆用户:select user();
    mariaDB(数据库)
  • 查看所有用户信息: desc mysql.user;
    mariaDB(数据库)
    但只有前三项才需要关注,所以过滤一下:select user,host,password from mysql.user;
    mariaDB(数据库)
    如:host字段指的是 允许这个用户可以从哪个客户端登陆。
    [email protected] 这样才算是一个完整的用户

修改mysql用户密码

  • 修改单独用户密码:

    • 方法一:mysqladmin -uroot -p当前密码 password ‘新密码’
      如果当前用户没有密码的话,-p 是可以不写的。
    • 方法二:set password for 指定的用户=password(‘新密码’);
      如果不需要指定用户:set password=password(‘新密码’);
      mariaDB(数据库)
    • 方法三:update mysql.user set password=password(‘新密码’) where user=‘user用户名’ and host=‘host名’ ;
      该方法有风险,如果where及后面的内容没写,就是修改所有表用户的密码了
      mariaDB(数据库)
      利用该方法修改密码后,刷新一下 新密码才可以用:flush privileges;
  • 修改所有用户的密码:update mysql.user set password=password(‘新密码’);
    就是修改表的形式。
    利用该方法修改密码后,刷新一下 新密码才可以用:flush privileges;
    mariaDB(数据库)

忘记密码后处理

比如 忘记了mysqlroot密码,需要重置该密码;

  • 方法一:
    vi /etc/my.cnf
    在里面加入一行:skip-grant-tables
    这样再次进入就相当于进入安全模式了,再次进入就不需要密码了
    mariaDB(数据库)
    重启服务:systemctl restart mariadb
    然后直接mysql即可进入系统,再次以当前无密码的方式设置密码即可:
    注:安全模式不能以该方法修改,会报错:set password=password(‘新密码’);
    mariaDB(数据库)
    只能以修改表方式:update mysql.user set password=password(‘新密码’) where user=‘root’ and host=‘localhost’; 然后刷新:flush privileges;
    mariaDB(数据库)
    quit退出mysql,再次vi /etc/my.cnf,把skip-grant-tables删除或者注释掉
    mariaDB(数据库)
    重启服务:systemctl restart mariadb 密码重置完成。

  • 方法二:
    先停止mariadb服务:systemctl stop mariadb
    以安全模式进入mariadb:mysqld_safe --skip-grant-tables
    mariaDB(数据库)
    此时当前窗口是无法做任何操作了,所以需要复制一个当前窗口,在新窗口中进入mysql系统便不需要密码了,然后在里面用表方式修改密码并刷新即可:
    mariaDB(数据库)
    quit退出数据库。但此时,以安全模式进入mariadb的窗口是无法结束的,即使ctrl+c 也不行,只能通过kill杀死进程:killall -9 mysqld_safe
    mariaDB(数据库)
    安全模式进入那窗口显示:
    mariaDB(数据库)
    然后启动mariadb服务:systemctl start mariadb , 重置完成。

新建mysql用户

  • 新建一个默认用户
    create user 新建用户名;
    mariaDB(数据库)
  • 删除默认用户
    drop user 需删除用户名;
    mariaDB(数据库)
  • 指定host创建用户
    create user 用户名@‘host名称’;
    mariaDB(数据库)
  • 删除指定host用户
    drop user 用户名@‘host名称’;
    mariaDB(数据库)
  • 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;
    mariaDB(数据库)
  • grant 创建带密码用户
    创建一个用户,权限只有select,能使用aa库中的所有表,只能200登陆,密码为redhait
    grant 权限 on aa.* to 用户@ip identified by ‘密码’;
    mariaDB(数据库)
    ip尾号为200的客户端使用tom用户登陆测试:
    mariaDB(数据库)
  • grant 创建不带密码用户
    也可以理解为给该用户添加权限;
    grant 权限 on aa.* to 用户@ip;
    mariaDB(数据库)
  • 回收grant创建的权限
    revoke p1(权限),p2,… 库.表 from 用户名@IP;
    mariaDB(数据库)

备份及恢复

自带命令备份与恢复

  • 备份分为热备份和冷备份

    • 冷备份-脱机备份
      备份的时候必须要吧数据库关闭,然后吧/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中:
      mariaDB(数据库)
      注:备份的并不是具体数据,而是创建时使用的命令备份下来了
      mariaDB(数据库)
  • 恢复备份的内容

  • 需要恢复的表必须在某个库里,如果不在某个库里恢复,则报错。
    mariaDB(数据库)

  • 所以正确使用是,登陆到数据库后,进入到需要恢复备份的库,在执行恢复操作
    如,现在要把备份的aa表中的内容恢复到aa库中:use aa; 执行恢复: source /backup/aa.sql;
    然后show tables; 即可看到:
    mariaDB(数据库)

使用工具备份与恢复

  • 这里以navicat for MySQL 为例

  • 先登录
    mariaDB(数据库)

  • 登陆成功后执行备份:
    mariaDB(数据库)

  • 恢复备份
    mariaDB(数据库)

扩展知识

要查看数据库里的内容 不一定非得 登陆到数据库才能看到
也可以直接在linux操作系统中查看:mysql -u用户 -p密码 -e ‘命令;’
mariaDB(数据库)

主要用于 写脚本,可以利用脚本来备份和恢复数据;