MariaDB基础命令

MariaDB 是 MySQL 的一个分支,由于某些原因,使之取代了Mysql成为了 RHEL/CentOS 7 的默认数据库。针对数据库的操作我们经常做的操作就是增删查改,接下来就介绍下 MariaDB的一些基础管理命令。

查看MariaDB安装的版本

查看所安装数据库的当前版本,在终端中输入以下命令:

root@localhost:~# mysql --version
mysql  Ver 15.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

此命令会告诉你数据库的当前版本。另外你也可以运行下面命令来查看版本的详细信息,需要输入数据库的root密码:

root@localhost:~# mysqladmin -u root -p version
Enter password: 
mysqladmin  Ver 9.1 Distrib 10.1.44-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Server version          10.1.44-MariaDB-0ubuntu0.18.04.1
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 14 hours 21 min 44 sec

Threads: 19  Questions: 759997  Slow queries: 0  Opens: 140  Flush tables: 1  Open tables: 134  Queries per second avg: 14.698
root@sr-cnvzabbix01:~# 

登录 MariaDB

登录 MariaDB 服务器,运行命令,输入用户密码即可登陆:

root@localhost:~# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9403
Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

列出所有的数据库

列出 MariaDB 当前拥有的所有数据库,当你登录到 MariaDB 中后运行:

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.01 sec)

MariaDB [(none)]> 

创建新数据库

MariaDB 中创建新数据库,登录 MariaDB 后运行:

MariaDB [(none)]> create database test;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]> 

若想直接在终端创建数据库,则运行:

root@localhost:~# mysqladmin -u root -p create test1
Enter password: 
root@localhost:~# 

删除数据库

删除数据库,在已登录的 MariaDB 会话中运行:

MariaDB [(none)]> drop database test;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> 

另外你也可以运行

root@localhost:~# mysqladmin -u root -p drop test1
Enter password: 
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'test1' database [y/N] y
Database "test1" dropped
root@localhost:~# 

创建新用户

为数据库创建新用户,运行:

MariaDB [(none)]> CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]>

dbuser:你将创建的用户名
localhost:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
例子:

CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

授权用户访问某个数据库

授权用户访问某个数据库,运行 命令: GRANT privileges ON databasename.tablename TO ‘username’@’host’ :

MariaDB [(none)]> GRANT ALL PRIVILEGES ON test.* to 'dbuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> 

赋予用户 dbuser 对名为 test 的数据库完全操作的权限。我们也可以限定为用户只赋予 SELECT、INSERT、DELETE 权限。

privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
例子:

GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';

要赋予访问所有数据库的权限,将 test 替换成 * 。像这样:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* to 'dbuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> 

注意:
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

备份/导出数据库

要创建单个数据库的备份,在终端窗口中运行下列命令

root@localhost:~# mysqldump -u root -p test > test.sql

若要一次性创建多个数据库的备份则运行:

root@localhost:~# mysqldump -u root -p --databases db_name1 db_name2 > db_name12_backup.sql

要一次性导出所有数据库,则运行:

root@localhost:~# mysqldump -u root -p --all-databases > all_dbs.sql

从备份中恢复数据库

从备份中恢复数据库,运行:

root@localhost:~# mysql -u root -p database_name < db_backup.sql

但这条命令成功的前提是预先没有存在同名的数据库。如果想要恢复数据库数据到已经存在的数据库中,则需要用到 mysqlimport 命令:

root@localhost:~# mysqlimport -u root -p database_name < db_backup.sql

更改 MariaDB 用户的密码

登录 MariaDB 并切换到 ‘test’ 数据库:

root@localhost:~# mysql -u root -p

MariaDB [(none)]> use test;
Database changed
MariaDB [test]> 

然后运行下面命令:

MariaDB [test]> update user set password=PASSWORD('your_new_password_here') where User='dbuser';
MariaDB [mysql]> update user set password=PASSWORD('new_password')
    -> ;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

MariaDB [mysql]> 

下一步,重新加载权限:

MariaDB [mysql]> flush privileges;

在实际测试时,更改密码遇到了如下问题:

MariaDB [test]> update user set password=PASSWORD('new_password') where User='dbuser';
ERROR 1146 (42S02): Table 'test.user' doesn't exist
MariaDB [test]>

因为之前给dbuser添加了所有数据库的权限,使用test数据库,无法修改密码,使用mysql 数据库,就可以修改密码了。

撤销用户权限

命令:

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

说明:
privilege, databasename, tablename:同授权部分

例子:

REVOKE SELECT ON *.* FROM 'pig'@'%';

注意:
假如你在给用户’pig’@’%’授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO ‘dbuser’@’%’,则在使用REVOKE SELECT ON *.* FROM ‘dbuser’@’%’;命令并不能撤销该用户对test数据库中user表的SELECT 操作。相反,如果授权使用的是GRANT SELECT ON *.* TO ‘pig’@’%’;则REVOKE SELECT ON test.user FROM ‘dbuser’@’%’;命令也不能撤销该用户对test数据库中user表的Select权限。

具体信息可以用命令SHOW GRANTS FOR ‘dbuser’@’%’; 查看。

删除用户

命令:

DROP USER 'username'@'host';

Was this article helpful?

Related Articles