1. 程式人生 > >MariaDB資料庫基礎操作

MariaDB資料庫基礎操作

前言:

最近整理一些以前的學習筆記。
過去都是儲存在本地,此次傳到網路留待備用。\


 

MariaDB

  • Mysql資料庫的兄弟版本,在mysql被收購後,為防止閉源,由mysql開發者主導開發
  • 相容mysql
  • 軟體:
    • 服務端: mariadb-server
    • 客戶端: mariadb
  • 埠: 3306
  • 配置檔案: /etc/my.cnf
  • 資料庫儲存目錄:/var/lib/mysql/

 

一、部署MariaDB

1.安裝軟體包:mariadb-server、mariadb

]# yum -y install mariadb-server mariadb

2.啟動服務:

]# systemctl start mariadb
]# ss -utnlp | grep mysql
tcp  LISTEN  0  50  *:3306  *:*  users:(("mysqld",pid=1365,fd=13))

3.進入資料庫管理系統

]# mysql
MariaDB [(none)]> 

 

二、資料庫操作

  • 顯示所有資料庫:

    MariaDB [(none)]> show databases;           --初始預設有4個庫
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
    4 rows in set (0.00 sec)
    
  • 進入資料庫:

    MariaDB [(none)]> use 資料庫名;
    MariaDB [(none)]> use mysql;            --進入mysql庫
    Database changed
    MariaDB [mysql]> 
    
  • 顯示所有資料表:

    MariaDB [(資料庫名)]> show tables;
    MariaDB [mysql]> show tables;               --顯示mysql庫中的所有表
    +---------------------------+
    | Tables_in_mysql           |
    +---------------------------+
    | columns_priv              |
    | db                        |
    | event                     |
    | func                      |
    | general_log               |
    | help_category             |
    | help_keyword              |
    | help_relation             |
    | help_topic                |
    | host                      |
    | ndb_binlog_index          |
    | plugin                    |
    | proc                      |
    | procs_priv                |
    | proxies_priv              |
    | servers                   |
    | slow_log                  |
    | tables_priv               |
    | time_zone                 |
    | time_zone_leap_second     |
    | time_zone_name            |
    | time_zone_transition      |
    | time_zone_transition_type |
    | user                      |           --存放授權使用者資訊
    +---------------------------+
    24 rows in set (0.00 sec)
    
  • 查看錶中的資料:

    MariaDB [(資料庫名)]> select * from 表名;
    MariaDB [mysql]> select * from user\G;              --查詢user表中的所有欄位
    
  • 退出資料庫:

    MariaDB [(資料庫名)]> exit
    MariaDB [mysql]> exit               --退出
    Bye
    
  • 備份資料庫(匯出):

    ]# mysqldump -u賬戶 -p密碼 資料庫名 > /路徑/備份名.bak
    ]# mysqldump mysql > ./database_mysql.bak               #備份mysql庫
    ]# mysqldump mysql.user > ./table_user.bak              #備份mysql庫中的user表
    ]# ls                                               #確認備份
    database_mysql.bak  table_user.bak
    
  • 還原資料庫(匯入):

    ]# mysql -u賬戶 -p密碼 資料庫名 < /路徑/備份名.bak
    ]# mysql test < database_mysql.bak                 #恢復備份庫到指定庫
    

增:

  • 建立新賬戶:

    MariaDB [(none)]> grant 許可權 on 資料庫名.表名
     -> to 賬戶@'可訪問的主機或網段'
     -> identified by '密碼';
        --授予 許可權 在 指定資料庫和表(許可權:all=全部;也可寫具體指令[select,insert]),
        --給 賬戶@可訪問的主機或網段,
        --設定賬戶的密碼;
    MariaDB [(none)]> grant all on test.* to dbuser@'%' identified by '123456';
    Query OK, 0 rows affected (0.00 sec)
        --在test庫的所有表上授予所有許可權 給使用者@'允許所有主機訪問' 設定密碼為'123456'
    
  • 建立資料庫:

    MariaDB [(none)]> create database 資料庫名;
    
    MariaDB [(none)]> create database d1;
    Query OK, 1 row affected (0.00 sec)
    
  • 建立表:

    MariaDB [(資料庫名)]> create table 表名 (列名1 型別,列名2 型別,...);
    
    MariaDB [(none)]> create table d1.tab1(id int, name varchar(10));
    Query OK, 0 rows affected (0.01 sec)
        --建立 表 庫d1下的tab1表(id欄位 整型, name欄位 可變字串(寬度))
    

  • 刪除某條資料:

    MariaDB [(資料庫名)]> delete from 表名 where 條件;
    
    MariaDB [(none)]> delete from test.user where host='localhost';
    Query OK, 2 rows affected (0.00 sec)
        --刪除test庫的user表中 host欄位等於'localhost'的行
    
  • 刪除資料表:

    MariaDB [(資料庫名)]> drop table 表名;
    
    MariaDB [(none)]> drop table test.user;        --刪除test庫中的user表
    Query OK, 0 rows affected (0.00 sec)
    
  • 刪除資料庫:

    MariaDB [(none)]> drop database 資料庫名;
    MariaDB [(none)]> drop database test;           --刪除test庫
    Query OK, 0 rows affected (0.00 sec)
    

  • 修改賬戶密碼:

    ]# mysqladmin -u 賬戶 -p password "密碼"       #修改指定賬戶的密碼
    ]# mysql -u賬戶 -p密碼                         #使用賬戶和新密碼登陸
    
  • 插入資料:

    MariaDB [(資料庫名)]> insert into 表名 values (列名,值);
    
    MariaDB [(none)]> insert into d1.tab1 values(1,'niwei');
    Query OK, 1 row affected (0.00 sec)    
    
  • 修改資料:

    MariaDB [(資料庫名)]> update 表名 set 修改的內容 where 修改的條件;
    
    MariaDB [(none)]> update d1.tab1 set name='yangyang' where id=1;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    

  • 檢視所有資料庫:

    MariaDB [(none)]> show databases;
    
  • 檢視資料庫中所有的表:

    MariaDB [(資料庫名)]> show tables;
    MariaDB [(none)]> show tables from 庫名;
    
  • 查看錶中所有資料:

    MariaDB [(資料庫名)]> select * from 表名;
    
    MariaDB [(none)]> select * from d1.tab1;
    +------+----------+
    | id   | name     |
    +------+----------+
    |    1 | yangyang |
    +------+----------+
    1 row in set (0.00 sec)
    
  • 查看錶中某列資料:

    MariaDB [(資料庫名)]> select 列名1,列名2,... from 表名;
    
    MariaDB [(none)]> select user,host,password from mysql.user;
    +--------+-----------+-------------------------------------------+
    | user   | host      | password                                  |
    +--------+-----------+-------------------------------------------+
    | root   | localhost |                                           |
    | root   | t1        |                                           |
    | root   | 127.0.0.1 |                                           |
    | root   | ::1       |                                           |
    |        | localhost |                                           |
    |        | t1        |                                           |
    | dbuser | %         | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    +--------+-----------+-------------------------------------------+
    
  • 條件查詢:

    MariaDB [(資料庫名)]> select * from 表名 where 條件( and 條件2);
    MariaDB [(none)]> select user,host,password from mysql.user where password !='';
        --查詢password欄位不為空的行
    +--------+------+-------------------------------------------+
    | user   | host | password                                  |
    +--------+------+-------------------------------------------+
    | dbuser | %    | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
    +--------+------+-------------------------------------------+
    
  • 多表聯合查詢:

    MariaDB [(資料庫名)]> SELECT 查詢欄位
     -> FROM 表1,表2
     -> WHERE 表1.列1='字串' AND
     -> 表2.列2='字串' AND
     -> 表1.匹配列=表2.匹配列;
    
    MariaDB [mysql]> select user.user,user.host,db.Db
     -> from user,db
     -> where user.user=db.User
     -> and user.user!='';
    +--------+------+------+
    | user   | host | Db   |
    +--------+------+------+
    | dbuser | %    | test |
    +--------+------+------+
    1 row in set (0.00 sec)
    
  • 描述表的資訊:

    MariaDB [(資料庫名)]> describe 表名;
    MariaDB [(資料庫名)]> desc 表名;
    
    MariaDB [mysql]> desc d1.tab1;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(11)     | YES  |     | NULL    |       |
    | name  | varchar(10) | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)