mariadb概述
起源:
MySQL之父Widenius先生離開了Sun之後,覺得依靠Sun/Oracle來發展MySQL,實在很不靠譜,於是決定另開分支,這個分支的名字叫做MariaDB。Maria是他女兒的名字
-
兼容性:
MariaDB跟MySQL在絕大多數方面是兼容的,對於開發者來說,幾乎感覺不到任何不同。目前MariaDB是發展最快的MySQL分支版本,新版本發佈速度已經超過了Oracle官方的MySQL版本。
-
Mysql出現的問題:
在Oracle控制下的MySQL開發,有兩個主要問題:
1. MySQL核心開發團隊是封閉的,完全沒有Oracle之外的成員參加。很多高手即使有心做貢獻,也沒辦法做到。
2. MySQL新版本的發佈速度在Oracle收購Sun之後大爲減緩。Widenius有一個ppt,用數據比較了收購之前和之後新版本的發佈速度。有很多bugfix和新的feature,都沒有及時加入到發佈版本之中。
以上這兩個問題,導致了各個大公司,都開發了自己定製的MySQL版本,包括Yahoo!/Facebook/Google/阿里巴巴+淘寶網等等。
-
MariaDB的特點:
與 MySQL 相比較,MariaDB 更強的地方在於:
Maria 存儲引擎 , PBXT 存儲引擎 , XtraDB 存儲引擎 , FederatedX 存儲引擎 , 更快的複製查詢處理 , 線程池 ,更少的警告和bug , 運行速度更快 , 更多的 Extensions (More index parts, new startup options etc) , 更好的功能測試 , 數據表消除 , 慢查詢日誌的擴展統計, 支持對 Unicode 的排序
-
MySQL是開源社區的資產,主要由開源社區在維護 ,任何個人/組織都無權據爲己有。爲了依靠廣大MySQL社區的力量來更快速的發展MySQL,另外開分支是必須的。
MariaDB默認的存儲引擎是Maria,不是MyISAM。Maria可以支持事務,但是默認情況下沒有打開事務支持,因爲事務支持對性能會有影響。可以通過以下語句,轉換爲支持事務的Maria引擎。ALTER TABLE
tablename
ENGINE=MARIA TRANSACTIONAL=1;
mariadb數據庫的建立與操作
1、安裝mariadb
yum install mariadb-server.x86_64 -y //安裝mariadb數據庫
systemctl start mariadb //開啓數據庫
2、數據庫安全設置
netstat -antple | grep mysql ##查看端口是否打開
vim /etc/my.cnf //關閉端口
skip-networking=1 //在註釋行後添加
systemctl restart mariadb
添加之後,查看端口,已經關閉了
mysql_secure_installation ##設置登陸密碼
mysql -uroot -p ##登陸數據庫
3、數據庫的使用
1> 查詢
查看有的庫 :
show datebases;
//進入mysql這個庫 :
use mysql;
顯示數據庫裏的所有表格 :
show tables;
//查看 user表的結構 :
desc user;
查看一個表格的所有內容, * : 所有字段
select * from user;
查看一個表格中有關鍵詞的部分
select * from user where Host='127.0.0.1';
2> 創建
create database westos;
#創建叫westos的數據庫
use westos;
#進入這個數據庫
MariaDB [westos]> show tables;
Empty set (0.00 sec)
MariaDB [westos]> create table linux ( ##創建linux表
-> username varchar(50) not null,
-> password varchar(50) not null,
-> age varchar(4) );
Query OK, 0 rows affected (0.33 sec)
//在userinf表格中插入數據
MariaDB [westos]> insert into linux values ('yuan','123','18');
MariaDB [westos]> insert into linux values ('lee','123','20');
MariaDB [westos]> insert into linux values ('li','123','20');
//查看這個表格的內容
MariaDB [westos]> select * from linux;
3> 修改
修改表格linux的名稱爲message :
alter table linux rename message;
添加屬性:
alter table linux add class varchar(50);
刪除表格中的class列:
alter table linux drop class;
在password之後添加屬性:
alter table linux add class varchar(50) after password;
update linux set class='linux'; ##改class這一列的所有屬性
update linux set class='java' where username='lee'; ##改一行中的一個屬性
4> 刪除
刪除username=lee且class=java的行
delete from linux where username='lee' and class='java';
#刪除表格linux
drop table linux;
#刪除數據庫westos
drop database westos;
5> 備份與恢復
mysqldump -uroot -predhat westos > /mnt/westos.sql
#將westos數據庫備份到/mnt下
[root@dnst ~]# mysql -uroot -predhat -e "drop database westos"
#刪除westos數據庫
[root@dnst ~]# mysql -uroot -predhat -e "create database westos"
#建立一個westos數據庫
[root@dnst ~]# mysql -uroot -predhat westos < /mnt/westos.sql
#將原westos數據庫中的數據導入到新的數據庫中
*注: 也可以在文件中上方的讀取westos數據庫信息之前直接填寫 :
CREATE DATABASE
westos;USE westos;
然後直接
[root@dnst ~]# mysql -uroot -predhat < /mnt/westos.sql
就可以直接導入
"但是注意,這裏面的文件都是數據庫的重要信息,一旦更改出錯是有可能造成數據庫混亂的的,所以儘量不要去碰這個文件"
6> 忘記密碼
//停止mariadb
systemctl stop mariadb
//啓動安全模式,且跳過認證表,不啓動授權表, & :進程打入後臺
mysqld_safe --skip-grant-tables &
此時直接輸入命令 mysql //不需要密碼直接進入數據庫
//進入mysql
use mysql
select * from user;
//發現 其中User,Password都是首字母大寫,密碼是加密的。
密碼部分 :" *84BB5DF4823DA319BBF86C99624479A198E6EEE9 "
//無密碼加密修改密碼: 修改裏面的user
MariaDB [mysql]> update user set Password= 'westos' where User='root';
| root | westos | //這是顯示的結果,修改的密碼沒有加密
//加密密碼修改:
MariaDB [mysql]> update user set Password=password('westos') where User='root';
| root | *28C1E2BE21B45562A34B6CC34A19CFAFC2F88F96 | //顯示的結果,密碼有加密
//查看有關mysql的進程
ps ax | grep mysql
kill -9 mysql的進程
systemctl start mariadb //重啓數據庫,生效
7> 用戶和訪問權限
創建一個yuan用戶,只能從本機登陸,登陸密碼爲westos
create user yuan@localhost identified by 'westos';
創建一個yuan用戶,可以從任何地方登陸,登陸密碼爲westos
create user yuan@'%' identified by 'westos'; ## '%' : 任何地方登陸
對yuan用戶授權:
grant insert,update,delete,select,drop on westos.* to yuan@localhost;
## westos.* 表示對數據庫westos授權,若是 *.*表示對所有數據庫授權
重新加載授權表 :
flush privileges;
## 授權表是默認自動刷新。但是如果,改完沒作用,手動刷新
查看yuan用戶的授權表:
show grants for yuan@localhost;
撤銷用戶的授權 :
revoke insert,update,delete,drop on westos.* from yuan@localhost;
刪除用戶:
drop user yuan@localhost;
數據庫的網頁圖形管理
mysql的圖形管理工具 : phpmyadmin
安裝
yum install httpd -y
systemctl start httpd //開啓httpd
systemctl enable httpd
systemctl stop firewalld //關閉火牆
systemctl disable firewalld
//因爲軟件是用php寫的,所以系統需要php的解釋器 ,所以要安裝php相應軟件
yum install php php-mysql -y
systemctl restart httpd
systemctl stop firewalld
還需要軟件包:
phpMyAdmin-3.4.0-all-languages.zip //下載數據庫網頁軟件壓縮包
配置
tar jxf phpMyAdmin-3.4.0-all-languages.tar.gz2 -C /var/www/html
//解壓壓縮包並存放到/var/www/html
mv phpMyAdmin-3.4.0-all-languages mysqladmin //重命名(爲了方便查看)
cd mysqladmin //進入這個目錄
查看README文件 ,
less README
發現要查看當前文件中的 Documentation.txt
less Documentation.txt
發現需要修改文件,還要添加信息,不過文件中改填寫的內容包括格式都已經給出了
下面就是照着文件中的去改 :
cp -p config.sample.inc.php config.inc.php ##修改配置文件
vim config.inc.php
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; ##裏面的字符可以隨便寫
systemctl restart httpd 重啓httpd服務生效
測試:
http://172.25.254.109/mysqladmin
因爲是最簡單的安裝,所以顯示缺少擴展,這裏不用管它,直接進入就可以
//這樣,就可以通過網絡管理你的數據庫