您好,登錄后才能下訂單哦!
本文主要給大家簡單講講linux中MySQL的一些知識,相關專業術語大家可以上網查查或者找一些相關書籍補充一下,這里就不涉獵了,我們就直奔主題吧,希望linux中MySQL的一些知識這篇文章可以給大家帶來一些實際幫助。
MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬于 Oracle 旗下產品。MySQL是最流行的關系型數據庫管理系統之一,在 WEB應用方面,MySQL是最好的 RDBMS (Relational DatabaseManagement System,關系數據庫管理系統) 應用軟件。
MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。
所謂的"關系型"可以理解為"表格"的概念, 這里的關系概念可以理解成生活中人及事物之間的關系,是一種通用的概念。一個關系型數據庫由一個或數個表格組成, 具體以學生這一實體為例。比如新學期開學,老師第一次上課,每一個學生都是陌生的臉孔,如何確認班上每一個學生,除了臉部識別之外,老師唯一確認一個學生依靠的是學生的學號,一個學號代表一個學生,學號沒有重復,叫到一個學號每次只有一個學生答到,這樣班級的每一個學生都可以被確定,所以id就是主鍵,唯一識別某一個具體的學生。但是這樣在確認了學生之后還是不夠的,每個學生都有自己的姓名、性別、年齡、聯系方式,依靠這些信息雖然不能唯一識別一個具體的學生,但是卻是每個學生都需要有的信息,這就是學生這一實體的屬性,屬性之間是互相不能依靠邏輯推出信息的,例如僅僅知道學生性別并不能根據性別而推測出學生的年齡,姓名,等其他屬性的信息,如果出現除了主鍵之外依據某一屬性可以推測出其他屬性的信息的現象則叫數據冗余,需要合并或者刪除屬性,從而實現合理全面的數據存儲。
如圖所示的一個表格:
表頭(header): 每一列的名稱即屬性;
列(row): 具有相同數據類型的數據的集合;
行(col): 每一行用來描述某個人/物的具體信息;
值(value): 行的具體信息, 每個值必須與該列的數據類型相同;
鍵(key): 表中用來識別某個特定的人\物的方法, 鍵的值在當前列中具有唯一性。
從 MySQL 轉向 MariaDB的代表廠家:谷歌(2013年9月)、RedHat(2013年6月)、維基百科(2013年4月)
MySQL在 2008年被Sun以10億美金所收購,MySQL創始人Michael Widenius則不滿Sun開發團隊腳步過慢,憤而離職成立開源數據庫聯盟,另外從現有 MySQL 程序代碼中,開發出另一個延伸分支版本,也就是名為瑪莉亞數據庫的企業級開源數據庫。
瑪莉亞數據庫如同 MySQL的影子版本,瑪莉亞數據庫是 MySQL的一個分支版本(branch),而不是衍生版本(folk),提供的功能可和 MySQL 完全兼容。
#!/bin/bash
#判斷系統是否已經安裝mariadb數據庫軟件,若安裝則進行提醒,并退出該腳本。
rpm -q mariadb >> /dev/null&& echo `rpm -q mariadb` is installed && exit 0
###注意:rpm查詢,只能查詢以rpm機制安裝的軟件,以其他方式安裝的軟件可能查詢不到。
#創建數據庫程序的用戶,并指定其工作目錄與登錄方式
useradd -d /app/mysqldb -r -m -s/sbin/nologin mysql
#切回root用戶目錄下
cd
#下載mariadb壓縮包,并將其解壓縮到指定目錄/usr/local
wgetftp://172.17.0.1/pub/Sources/6.x86_64/mariadb/mariadb-5.5.57-linux-x86_64.tar.gz
tar -xf/root/mariadb-5.5.57-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
#創建軟鏈接
ln -s mariadb-5.5.57-linux-x86_64mysql
cd /usr/local/mysql
mkdir /etc/mysql/
#拷貝配置文件樣例
cp support-files/my-huge.cnf/etc/mysql/my.cnf
#使用sed直接對樣例/etc/mysql/my.cnf進行編輯,使其符合自身需求
sed -i '/\[mysqld\]/a\datadir\\=\ \/app\/mysqldb\ninnodb_file_per_table\ \=\ on\nskip_name_resolve\ \=\ on'/etc/mysql/my.cnf
#初始化數據庫
scripts/mysql_install_db--user=mysql --datadir=/app/mysqldb
#創建mariadb的服務程序,并設置在哪些運行級別下可以自行啟動
cp support-files/mysql.server/etc/init.d/mysqld
chkconfig --add mysqld
#判斷系統版本,以便創建不同的數據庫日志文件
if [ `sed -r 's/.*([0-9]+)\..*/\1/' /etc/centos-release` -eq 7 ]; then
mkdir /var/log/mariadb/
chown mysql /var/log/mariadb/
systemctl start mysqld
else
touch /var/log/mysqld.log
chown mysql /var/log/mysqld.log
service mysqld start
fi
#設置環境變量
echo'PATH=$PATH:/usr/local/mysql/bin' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
#運行安全初始化腳本
echo -e"\ny\n123456\n123456\ny\nn\nn\ny" | mysql_secure_installation
#運行mysql服務
mysql -uroot -p
與常規的腳本語言類似, MySQL 也具有一套對字符、單詞以及特殊符號的使用規定, MySQL 通過執行 SQL 腳本來完成對數據庫的操作, 該腳本由一條或多條MySQL語句(SQL語句 + 擴展語句)組成, 保存時腳本文件后綴名一般為 .sql。
標識符用來命名一些對象, 如數據庫、表、列、變量等, 以便在腳本中的其他地方引用。MySQL標識符命名規則稍微有點繁瑣, 這里我們使用萬能命名規則: 標識符由字母、數字或下劃線(_)組成, 且第一個字符必須是字母或下劃線。
對于標識符是否區分大小寫取決于當前的操作系統, Windows下是不敏感的, 但對于大多數 linux\unix 系統來說, 這些標識符大小寫是敏感的。
MySQL的關鍵字眾多, 這里不一一列出, 在學習中學習。 需要注意的是,這些關鍵字有自己特定的含義, 盡量避免作為標識符。
MySQL語句是組成MySQL腳本的基本單位, 每條語句能完成特定的操作, 他是由 SQL 標準語句 + MySQL 擴展語句組成。
MySQL函數用來實現數據庫操作的一些高級功能, 這些函數大致分為以下幾類: 字符串函數、數學函數、日期時間函數、搜索函數、加密函數、信息函數。
MySQL有三大類數據類型, 分別為數字、日期\時間、字符串, 這三大類中又更細致的劃分了許多子類型:
整數: tinyint、smallint、mediumint、int、bigint
浮點數: float、double、real、decimal
日期和時間: date、time、datetime、timestamp、year
字符串類型
字符串: char、varchar
文本: tinytext、text、mediumtext、longtext
二進制(可用來存儲圖片、音樂等): tinyblob、blob、mediumblob、longblob
(由于數據類型較多,限于文章篇幅有限,具體數據類型請自行查看專業書籍)
show databases;
use 數據庫名;
show tables;
describe 表名;
SELECT * FROM 表名
create databse 庫名;
create table 表名 (字段設定列表);
mysql>create table name(
-> id int auto_increment not null primary key ,
-> uname char(8),
-> gender char(2),
-> birthday date );
Query OK, 0 rows affected (0.03 sec)
mysql> show tables;
+------------------+
| Tables_in_userdb |
+------------------+
| name |
+------------------+
1 row in set (0.00 sec)
mysql> describe name;
+----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| uname | char(8) | YES | | NULL | |
| gender | char(2) | YES | | NULL | |
| birthday | date | YES | | NULL | |
+----------+---------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
注: auto_increment 自增
primary key 主鍵
insert into name(uname,gender,birthday) values('張三','男','1971-10-01');
update name setbirthday='1971-01-10' where uname='張三';
delete from namewhere uname='張三';
drop table 表名
drop database 庫名;
mysqldump -uroot -p --opt 數據庫名>備份名; //進入到庫目錄
mysql -u root -p數據庫名<備份名; //恢復時數據庫必須存在,可以為空數據庫
格式:grant select on 數據庫.* to 用戶名@登錄主機identified by "密碼"
例1、增加一個用戶user001密碼為123456,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入MySQL,然后鍵入以下命令:
mysql> grant select,insert,update,delete on *.* to user001@"%" Identified by "123456";
例2、增加一個用戶user002密碼為123456,讓此用戶只可以在localhost上登錄,也可以設置指定IP,并可以對數據庫test進行查詢、插入、修改、刪除的操作 (localhost指本地主機,即MySQL數據庫所在的那臺主機)
//這樣用戶即使用知道user_2的密碼,他也無法從網上直接訪問數據庫,只能通過MYSQL主機來操作test庫。
//首先用以root用戶連入MySQL,然后鍵入以下命令:
mysql>grant select,insert,update,delete on test.* to user002@localhost identified by "123456";
注: 其次也可以采用修改表的方式,處理用戶的登錄方式:
數據庫: Mysql
表: User
修改: User表中的Host列的值來現實登錄入口
linux中MySQL的一些知識就先給大家講到這里,對于其它相關問題大家想要了解的可以持續關注我們的行業資訊。我們的板塊內容每天都會捕捉一些行業新聞及專業知識分享給大家的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。