目录

MariaDB(数据库

mariadb的基本管理

mariadb的安装和配置

安装

配置

mysql使用及常用命令

登陆mysql语法:

查看mysq详细

命令结尾说明

查看所有库

查看当前所属库

进入到某个库

创建新的库

查询某个库的详细信息

导入数据

修改某个库的 编码

删除某个库

复制表

复制表结构

复制表内容(一般用于复制表结构后使用)

查看mysql所有内置参数

上述只是 mysql最基本的使用

mariadb的用户管理

介绍

查看当前登陆用户

查看所有用户信息

修改mysql用户密码

修改单独用户密码:

修改所有用户的密码

忘记密码后处理

新建mysql用户

新建一个默认用户

删除默认用户

指定host创建用户

删除指定host用户

grant 创建用户说明

用户权限设置

备份及恢复

自带命令备份与恢复

冷备份-脱机备份

热备份-联机备份

恢复备份的内容

使用工具备份与恢复

扩展知识

不进入数据库查看数据库内容方法

MariaDB(数据库

MySQL数据库后来被oracle数据库收购了,但MySQL数据库作者写了个和MySQL一摸一样的数据库,名字为mariadb。
所以 mariadb和MySQL的使用基本上一摸一样。

mariadb的基本管理

mariadb的安装和配置

服务端需要安装mariadb-server服务,mariadb命令(服务端也可以当客户端用)
客户端仅需要mariadb即可

安装
  • yum -y install mariadb-server mariadb-client 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_secure_installation,过程和说明如下

[root@system1 ~]# mysql_secure_installation  #设置数据库
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):  #因为以前没密码,直接回车即可
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y  #是否设置root密码 —— y
New password:  #自定义
Re-enter new password:  # 自定义
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]  #是否删除匿名用户,默认回车即可
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y #是否拒绝root远程登陆——y,这样就只能localhost登陆了
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]  #删除测试数据库访问他,默认回车即可
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]  #是否现在重新加载权限表,默认回车即可
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

基本配置就完成了

mysql使用及常用命令

登陆mysql语法:

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

  • 不需要指定用户和么有密码直接输入mysql ,进入mysql的子系统:
    在这里插入图片描述
    在mysql中即可执行若干命令;
查看mysq详细

status
在这里插入图片描述

命令结尾说明

注:在mysql提示符下敲命令的时候,一般都要以; 或者\G结束,更多的时候使用 ;结束,\G一般用户格式化输出,如果没有以 ; 结束的话,系统就会认为命令没有完成,不执行。 凡事以#或者--开头的语句,都认为是注释。

  • ; 结尾
    在这里插入图片描述
  • 以 \G 结尾(会格式化并排版)
    在这里插入图片描述
    所以如果命令太长的话,可以任意的换行。
查看所有库

所谓的库–> 可以把她理解为 文件夹(担文件夹不能再建文件夹), 在这个库里,存有多个excel表格,这个excel表格就是我们所说的表。
show databases;
在这里插入图片描述

查看当前所属库

为NULL就是当前不属于任何库:select database();
在这里插入图片描述

进入到某个库

use 库名;
在这里插入图片描述

创建新的库

create databases 新建库名;
在这里插入图片描述

查询某个库的详细信息

show create database 需查询库名;
在这里插入图片描述

导入数据

先进入一个库,然后使用source 数据路径【虚拟机中路径】 即可

MariaDB [(none)]> use legacy
Database changed
MariaDB [legacy]> source /root/mariadb.dump; # 导入数据
Query OK, 0 rows affected (0.00 sec)
MariaDB [legacy]> show tables;
+------------------+
| Tables_in_legacy |
+------------------+
| category         |
| manufacturer     |
| product          |
+------------------+
3 rows in set (0.00 sec)

修改某个库的 编码

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个或多个)
在这里插入图片描述
vi /etc/my.cnf 写入配置文件中后,下划线变为中横线:
在这里插入图片描述

上述只是 mysql最基本的使用

更加详细的参考博客:MySQL使用大全和JDBC使用_五万字的详细笔记

mariadb的用户管理

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

mysql 进入子系统后

查看当前登陆用户

select user();
在这里插入图片描述

查看所有用户信息

desc mysql.user;
在这里插入图片描述
但只有前三项才需要关注,所以过滤一下:select user,host,password from mysql.user;
在这里插入图片描述
如:host字段指的是 允许这个用户可以从哪个客户端登陆。
user@host 这样才算是一个完整的用户

修改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;
修改所有用户的密码

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系统便不需要密码了,然后在里面用表方式修改密码并刷新即可:
    update mysql.user set password=password('新密码') where user='root' and host='localhost'; 然后刷新:flush privileges;在这里插入图片描述
    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)则使用allall 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;
    在这里插入图片描述
用户权限设置
  • 用户名:Mary,密码:mary_passwd——对legacy库的所有数据都有选择操作权限
MariaDB [legacy]> grant select on legacy.* to 'mary'@'localhost' identified by 'mary_passwd'; #localhost是访问本机的意思,by后面是密码
Query OK, 0 rows affected (0.00 sec)
MariaDB [legacy]> flush privileges; #刷新权限
  • 用户名:Legacy,密码:report_password—— 对legacy库的所有数据又选择、插入、更新、删除操作权限
MariaDB [legacy]> grant select,insert,update,delete on legacy.* to 'legacy'@'localhost' identified by 'legacy_passwd';#localhost是访问本机的意思,by后面是密码
Query OK, 0 rows affected (0.00 sec)
MariaDB [legacy]> flush privileges; #刷新权限
  • 用户名:Report,密码:legacy_passwd 对legacy库的所有数据又选择操作权限
MariaDB [legacy]> grant select on legacy.* to 'report'@'localhost' identified by 'report_password';#localhost是访问本机的意思,by后面是密码
Query OK, 0 rows affected (0.00 sec)
MariaDB [legacy]> flush privileges; #刷新权限

备份及恢复

自带命令备份与恢复
  • 备份分为热备份和冷备份
冷备份-脱机备份

备份的时候必须要吧数据库关闭,然后吧/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库中:
    进入aa库:use aa;
    执行恢复: source /backup/aa.sql;
    然后show tables;
    即可看到:
    在这里插入图片描述
使用工具备份与恢复
  • 这里以navicat for MySQL 为例

  • 先登录
    在这里插入图片描述

  • 登陆成功后执行备份:
    在这里插入图片描述

  • 恢复备份
    在这里插入图片描述

扩展知识

要查看数据库里的内容 不一定非得 登陆到数据库才能看到
也可以直接在linux操作系统中查看:mysql -u用户 -p密码 -e '命令';
在这里插入图片描述

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

不进入数据库查看数据库内容方法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐