Date: 2019-06-03html
Author: Sunmysql
存儲數據?linux
(1)文件redis
(2)關係型數據庫(mysql, oracle)—結構化存儲(結構化數據,引入numpy,pandas)sql
(3)非關係型數據庫(redis, mongodb)---- 數據組織的方式並非以一張二維表組織。mongodb
(4)圖片服務器(均勻小塊存儲 block 1M左右)數據庫
(5)HDFS(大塊存儲,64M block) — 非結構化,數據分佈式全量存儲django
(6)視頻服務器(幾百兆 block)ubuntu
在第一節課中講過了如何採用vagrant建立centos虛擬化環境。vim
本節講解如何在centos虛擬機中安裝mysql數據庫
因爲Vagrant採用的是端口硬是,如果外部訪問的話,還必須記得加上,端口映射,不然鏈接不上去的
端口代碼:
mysql.vm.network "forwarded_port", guest: 3306, host: 3306
解決方案1:
查看本地ip所在的網段,設置Vagrantfile文件。(假設本地IP網段在192.168.1.xxx)
添加以下內容(添加共有網絡配置,IP一個網段)
config.vm.network "public_network", ip: "192.168.1.31"
vagrant 從新加載
vagrant reload
重啓
vagrant up
說明:
若是按照上述過程啓動不了vagrant,有可能要採用方案2,設置Vagrantfile文件(設置爲私有網絡配置)
Vagrant.configure("2") do |config| config.vm.define :mysql do |mysql| mysql.vm.provider "virtualbox" do |v| v.name = "mysql" v.customize ["modifyvm", :id, "--memory", "1024"] v.customize ["modifyvm", :id, "--cpus", "1"] v.cpus = 1 end mysql.vm.box = "centos7" mysql.vm.hostname = "mysql" mysql.vm.network "private_network", ip: "192.168.1.31" mysql.vm.network "forwarded_port", guest: 3306, host: 3306 end end
登陸到centos
vagrant ssh
安裝MariaDb
MariaDb是最近推出一款企業級MYSQL Server
Percona Server 和 MariaDb 是當前最爲流行的兩大企業級MYSQL SERVER解決方案
sudo yum -y install mariadb mariadb-server
安裝完成MariaDB,首先啓動MariaDB
sudo systemctl start mariadb
設置開機啓動
sudo systemctl enable mariadb
接下來進行MariaDB的相關簡單配置
sudo mysql_secure_installation
首先是設置密碼,會提示先輸入密碼
Enter current password for root (enter for none):<–初次運行直接回車
設置密碼
Set root password? [Y/n] <– 是否設置root用戶密碼,輸入y並回車或直接回車
New password: <– 設置root用戶的密碼
Re-enter new password: <– 再輸入一次你設置的密碼
其餘配置
Remove anonymous users? [Y/n] <– 是否刪除匿名用戶,回車
Disallow root login remotely? [Y/n] <–是否禁止root遠程登陸,回車,
Remove test database and access to it? [Y/n] <– 是否刪除test數據庫,回車
Reload privilege tables now? [Y/n] <– 是否從新加載權限表,回車
初始化MariaDB完成,接下來測試登陸
mysql -uroot -ppassword
因爲是本地測試,因此直接關閉防火牆更方便,centos7以下
關閉firewall: systemctl stop firewalld.service #中止firewall systemctl disable firewalld.service #禁止firewall開機啓動 firewall-cmd --state #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running)
mysql -u root -p
設置權限
grant all privileges on . to 'ruanmou'@'%' identified by 'ruanmou123' with grant option;
至此,就能夠採用navicat進行鏈接mysql進行測試了
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,
每一個數據庫都有一個或多個不一樣的API用於建立,訪問,管理,搜索和複製所保存的數據。
咱們也能夠將數據存儲在文件中,可是在文件中讀寫數據速度相對較慢。
因此,如今咱們使用關係型數據庫管理系統(RDBMS)來存儲和管理的大數據量。所謂的關係型數據庫,是創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。
數據持久化: 數據永久保存
存儲介質:文件(txt, word, excel, csv), 關係型數據庫
SQL SERVER, MYSQL, ORACLE
關係型數據庫層次:
(1)數據庫引擎(由底層C語言封裝的操做庫,表,管理等操做)
mysql引擎:InnoDB(行級鎖,插入速度快,支持事務), MyISAM(表級鎖,查詢速度快快)
線上通常都採用InnoDB引擎存儲。
(2)引擎提供上層可調用SQL API接口
複合SQL-98標準規範
MySQL 是一個關係型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 公司。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。
mysql產生幾個企業版本:Percona Server, MariaDB
MySQL 是最流行的關係型數據庫管理系統,在WEB應用方面 MySQL 是最好的RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。
優勢:
MySQL數據庫引擎:
(1)MyISAM
表級鎖引擎,查詢速度很快,可是處理效率低
(2)InnoDB
行級鎖引擎,支持事務,通常線上mysql數據庫都是採用這種引擎。
Ubuntu 16.04下安裝MySQL的過程:
首先執行下面三條命令:
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
安裝成功後能夠經過下面的命令測試是否安裝成功:
sudo netstat -tap | grep mysql ( or sudo netstat -anp | grep mysql )
出現以下信息證實安裝成功:
sudo netstat -tap | grep mysql [sudo] password for zhouguangyou: tcp 0 0 *:mysql *:* LISTEN 1146/mysqld
能夠經過以下命令進入MySQL服務:
mysql -u root -p 你的密碼
如何進行遠程訪問mysql?
如今設置mysql容許遠程訪問,首先編輯文件/etc/mysql/mysql.conf.d/mysqld.cnf:
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
註釋掉bind-address = 127.0.0.1:修改成: bind-address=0.0.0.0
如何對建立新用戶並設置訪問權限?
最好以超級root用戶進行權限分配
grant all on *.* to zhougy@'%' identified by '123456' with grant option; flush privileges;
上述信息能夠根據自身的狀況進行修改定製。(建立新用戶zhougy,賦予全部權限,且遠程能訪問)
從新啓動下mysql
/etc/init.d/mysql stop && /etc/init.d/mysql start
從新鏈接mysql
mysql -u root -h 你的mysql數據庫IP地址 -p 你的密碼
建立數據庫db_name, 並設置字符編碼爲utf8
mysql> create database db_name CHARACTER SET utf8;
附:
編碼問題,致使沒法輸入中文。
安裝MySQL數據庫時的默認編碼是latin1。
若是咱們進入Add按鈕添加相關信息,若是輸入的是英文,沒有問題,若是輸入的是中文,則會出現異常錯誤。以下:
InternalError at /admin/app/school/add/ (1366, "Incorrect string value: '\\xE6\\xB8\\x85\\xE5\\x8D\\x8E...' for column 'sname' at row 1")
出現此類錯誤緣由:數據庫mysql字符編碼問題,須要改爲utf-8
Questions: 修改mysql數據庫默認編碼
查看MySQL當前數據庫的默認編碼:
mysql> status; -------------- mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper Connection id: 3 Current database: hello_django Current user: django@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu) Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /var/run/mysqld/mysqld.sock Uptime: 2 hours 18 min 45 sec
發現編碼方式是latin1
須要改爲utf-8
解決方案:
(1)修改MySQL的配置文件 vim /etc/mysql/mysql.conf.d/mysqld.cnf 中追加
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
從新啓動下mysql
/etc/init.d/mysql stop && /etc/init.d/mysql start
改變後,以前手工建立的數據庫如未顯式指定編碼,則其編碼還是默認的latin1,可以使用以下命令更改編碼:
mysql> create database db_name CHARACTER SET utf8;
好了,再次使用以下命令查看編碼方式:
mysql> show variables like 'character_set_database';
mysql> status;
都改爲了utf-8
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
修改編碼格式成功!