文章目录

  • 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
  • mariadb安装为mysql mariadb安装教程_mariadb安装为mysql

  • 从配置文件可以看到数据库存放目录为/var/lib/mysql,所以如果数据重要或偏多,可以单独外挂一个磁盘目录为/var/lib/mysql
    /var/lib/mysql目录中的数据实际上就是mysql里的 库 的数据:
    cd /var/lib/mysql,ls看到的内容:
  • mariadb安装为mysql mariadb安装教程_用户名_02


  • 启动mariadb服务并开启自启:systemctl start mariadb , systemctl enable mariadb
  • mariadb安装为mysql mariadb安装教程_mariadb安装为mysql_03


  • mariadb端口是3306,查看端口是否开启:netstat -ntulp | grep mysq
  • mariadb安装为mysql mariadb安装教程_mysql_04


  • 防火墙中开放mysql服务:firewall-cmd --add-service=mysql , firewall-cmd --add-service=mysq --permanent
  • mariadb安装为mysql mariadb安装教程_mysql_05


配置

命令: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

mariadb安装为mysql mariadb安装教程_数据库_06

命令结尾说明

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

  • ; 结尾
  • \G 结尾(会格式化并排版)

    所以如果命令太长的话,可以任意的换行。

查看所有库

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

show databases;

mariadb安装为mysql mariadb安装教程_数据库_07

查看当前所属库

为NULL就是当前不属于任何库:select database();

mariadb安装为mysql mariadb安装教程_mariadb安装为mysql_08

进入到某个库

use 库名;

mariadb安装为mysql mariadb安装教程_数据库_09

创建新的库

create databases 新建库名;

mariadb安装为mysql mariadb安装教程_mysql_10

查询某个库的详细信息

show create database 需查询库名;

mariadb安装为mysql mariadb安装教程_数据库_11

导入数据

先进入一个库,然后使用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=编码 亦可);

mariadb安装为mysql mariadb安装教程_mysql_12

删除某个库

drop database 需删除的库名;

mariadb安装为mysql mariadb安装教程_mariadb安装为mysql_13

复制表

create table bb as select * from aa; 现在aa中的数据就复制到bb里了

mariadb安装为mysql mariadb安装教程_MariaDB_14

复制表结构

create table cc like aa; 现在aa表的结构就复制到cc里了

mariadb安装为mysql mariadb安装教程_数据库_15

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

insert into cc select * from aa; 现在aa表里的内容就复制到cc里了

mariadb安装为mysql mariadb安装教程_mariadb安装为mysql_16

查看mysql所有内置参数

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

mariadb安装为mysql mariadb安装教程_用户名_17


写入配置文件中后,下划线变为中横线:

mariadb安装为mysql mariadb安装教程_用户名_18

上述只是 mysql最基本的使用

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

mariadb的用户管理

介绍

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

mysql 进入子系统后

查看当前登陆用户

select user();

mariadb安装为mysql mariadb安装教程_mariadb安装为mysql_19

查看所有用户信息

desc mysql.user;

mariadb安装为mysql mariadb安装教程_mysql_20


但只有前三项才需要关注,所以过滤一下:select user,host,password from mysql.user;

mariadb安装为mysql mariadb安装教程_mysql_21


如:host字段指的是 允许这个用户可以从哪个客户端登陆。

user@host 这样才算是一个完整的用户

修改mysql用户密码

修改单独用户密码:
  • 方法一:mysqladmin -uroot -p当前密码 password '新密码' 如果当前用户没有密码的话,-p 是可以不写的。
  • 方法二:set password for 指定的用户=password('新密码'); 如果不需要指定用户:set password=password('新密码');
  • mariadb安装为mysql mariadb安装教程_用户名_22


  • 方法三:update mysql.user set password=password('新密码') where user='user用户名' and host='host名' ; 该方法有风险,如果where及后面的内容没写,就是修改所有表用户的密码了
  • mariadb安装为mysql mariadb安装教程_数据库_23

  • 利用该方法修改密码后,刷新一下 新密码才可以用:flush privileges;
修改所有用户的密码

update mysql.user set password=password('新密码'); 就是修改表的形式。

利用该方法修改密码后,刷新一下 新密码才可以用:flush privileges;

mariadb安装为mysql mariadb安装教程_数据库_24

忘记密码后处理

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

  • 方法一:
    vi /etc/my.cnf 在里面加入一行:skip-grant-tables 这样再次进入就相当于进入安全模式了,再次进入就不需要密码了
  • mariadb安装为mysql mariadb安装教程_MariaDB_25

  • 重启服务:systemctl restart mariadb 然后直接mysql即可进入系统,再次以当前无密码的方式设置密码即可:
    注:安全模式不能以该方法修改,会报错:set password=password('新密码');
  • mariadb安装为mysql mariadb安装教程_数据库_26

  • 只能以修改表方式:update mysql.user set password=password('新密码') where user='root' and host='localhost'; 然后刷新:flush privileges;
  • mariadb安装为mysql mariadb安装教程_MariaDB_27

  • quit退出mysql,再次vi /etc/my.cnf,把skip-grant-tables删除或者注释掉
  • mariadb安装为mysql mariadb安装教程_数据库_28

  • 重启服务:systemctl restart mariadb 密码重置完成。
  • 方法二:
    先停止mariadb服务:systemctl stop mariadb 以安全模式进入mariadb:mysqld_safe --skip-grant-tables
  • mariadb安装为mysql mariadb安装教程_用户名_29

  • 此时当前窗口是无法做任何操作了,所以需要复制一个当前窗口,在新窗口中进入mysql系统便不需要密码了,然后在里面用表方式修改密码并刷新即可:
    update mysql.user set password=password('新密码') where user='root' and host='localhost'; 然后刷新:flush privileges;
  • mariadb安装为mysql mariadb安装教程_mariadb安装为mysql_30

  • quit退出数据库。但此时,以安全模式进入mariadb的窗口是无法结束的,即使ctrl+c 也不行,只能通过kill杀死进程:killall -9 mysqld_safe
  • mariadb安装为mysql mariadb安装教程_数据库_31

  • 安全模式进入那窗口显示:
  • mariadb安装为mysql mariadb安装教程_mysql_32

  • 然后启动mariadb服务:systemctl start mariadb, 重置完成。

新建mysql用户

新建一个默认用户

create user 新建用户名;

mariadb安装为mysql mariadb安装教程_mariadb安装为mysql_33

删除默认用户

drop user 需删除用户名;

mariadb安装为mysql mariadb安装教程_数据库_34

指定host创建用户

create user 用户名@'host名称';

mariadb安装为mysql mariadb安装教程_mysql_35

删除指定host用户

drop user 用户名@'host名称';

mariadb安装为mysql mariadb安装教程_用户名_36

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;
  • mariadb安装为mysql mariadb安装教程_数据库_37


  • grant 创建带密码用户
    创建一个用户,权限只有select,能使用aa库中的所有表,只能200登陆,密码为redhait
    grant 权限 on aa.* to 用户@ip identified by '密码';
  • mariadb安装为mysql mariadb安装教程_mariadb安装为mysql_38

  • ip尾号为200的客户端使用tom用户登陆测试:
  • mariadb安装为mysql mariadb安装教程_MariaDB_39


  • grant 创建不带密码用户
    也可以理解为给该用户添加权限;
    grant 权限 on aa.* to 用户@ip;
  • mariadb安装为mysql mariadb安装教程_mysql_40


  • 回收grant创建的权限
    revoke p1(权限),p2,... 库.表 from 用户名@IP;
  • mariadb安装为mysql mariadb安装教程_mysql_41


用户权限设置
  • 用户名: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 on legacy.* to 'report'@'localhost' identified by 'report_password';#localhost是访问本机的意思,by后面是密码
Query OK, 0 rows affected (0.00 sec)
MariaDB [legacy]> flush privileges; #刷新权限
  • 用户名:Report,密码:legacy_passwd 对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; #刷新权限

备份及恢复

自带命令备份与恢复

  • 备份分为热备份和冷备份
冷备份-脱机备份

备份的时候必须要吧数据库关闭,然后吧/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安装为mysql mariadb安装教程_mysql_42

  • 注:备份的并不是具体数据,而是创建时使用的命令备份下来了
  • mariadb安装为mysql mariadb安装教程_MariaDB_43


恢复备份的内容
  • 需要恢复的表必须在某个库里,如果不在某个库里恢复,则报错。
  • 所以正确使用是,登陆到数据库后,进入到需要恢复备份的库,在执行恢复操作
    如,现在要把备份的aa表中的内容恢复到aa库中:
    进入aa库:use aa; 执行恢复: source /backup/aa.sql; 然后show tables; 即可看到:
  • mariadb安装为mysql mariadb安装教程_mysql_44


使用工具备份与恢复

  • 这里以navicat for MySQL 为例
  • 先登录
  • mariadb安装为mysql mariadb安装教程_用户名_45

  • 登陆成功后执行备份:
  • mariadb安装为mysql mariadb安装教程_mariadb安装为mysql_46

  • 恢复备份
  • mariadb安装为mysql mariadb安装教程_mysql_47

扩展知识

要查看数据库里的内容 不一定非得 登陆到数据库才能看到

也可以直接在linux操作系统中查看:mysql -u用户 -p密码 -e '命令';

mariadb安装为mysql mariadb安装教程_数据库_48

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

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

mariadb安装为mysql mariadb安装教程_MariaDB_49

mariadb安装为mysql mariadb安装教程_用户名_50


mariadb安装为mysql mariadb安装教程_mysql_51