MySQL數據庫

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

1. 如何在vagrant的centos虛擬機下安裝mysql

在第一節課中講過了如何採用vagrant建立centos虛擬化環境。vim

本節講解如何在centos虛擬機中安裝mysql數據庫

因爲Vagrant採用的是端口硬是,如果外部訪問的話,還必須記得加上,端口映射,不然鏈接不上去的

端口代碼:

mysql.vm.network "forwarded_port", guest: 3306, host: 3306

步驟1

  1. vagrant配置IP,使得和windows互通。

​ 解決方案1:

​ 查看本地ip所在的網段,設置Vagrantfile文件。(假設本地IP網段在192.168.1.xxx)

​ 添加以下內容(添加共有網絡配置,IP一個網段)

​ config.vm.network "public_network", ip: "192.168.1.31"

  1. vagrant 從新加載

    vagrant reload

  2. 重啓

    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
  1. 登陸到centos

    vagrant ssh

步驟2

安裝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

步驟3 關閉防火牆,或者對外開放3306端口

因爲是本地測試,因此直接關閉防火牆更方便,centos7以下

關閉firewall:
systemctl stop firewalld.service #中止firewall
systemctl disable firewalld.service #禁止firewall開機啓動
firewall-cmd --state #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running)

步驟4 登陸mysql數據庫,設置權限

mysql -u root -p

設置權限

grant all privileges on . to 'ruanmou'@'%' identified by 'ruanmou123' with grant option;

至此,就能夠採用navicat進行鏈接mysql進行測試了

2. 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 是一個關係型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 公司。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。

​ mysql產生幾個企業版本:Percona Server, MariaDB

​ MySQL 是最流行的關係型數據庫管理系統,在WEB應用方面 MySQL 是最好的RDBMS(Relational Database Management System:關係數據庫管理系統)應用軟件之一。

​ 優勢:

  • MySQL 是開源的,因此你不須要支付額外的費用。
  • MySQL 支持大型的數據庫。能夠處理擁有上千萬條記錄的大型數據庫。
  • MySQL 使用標準的SQL數據語言形式。
  • MySQL 對Python等語言有很好的支持.

MySQL數據庫引擎:

(1)MyISAM

​ 表級鎖引擎,查詢速度很快,可是處理效率低

(2)InnoDB

​ 行級鎖引擎,支持事務,通常線上mysql數據庫都是採用這種引擎。

Ubuntu安裝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/ |
+--------------------------+----------------------------+

修改編碼格式成功!

相關文章
相關標籤/搜索