zoukankan      html  css  js  c++  java
  • MySQL数据库

    Date: 2019-06-03

    Author: Sun

    存储数据?

    (1)文件

    (2)关系型数据库(mysql, oracle)—结构化存储(结构化数据,引入numpy,pandas)

    (3)非关系型数据库(redis, mongodb)---- 数据组织的方式并不是以一张二维表组织。

    (4)图片服务器(均匀小块存储 block 1M左右)

    (5)HDFS(大块存储,64M block) — 非结构化,数据分布式全量存储

    (6)视频服务器(几百兆 block)

    1. 如何在vagrant的centos虚拟机下安装mysql

    在第一节课中讲过了如何采用vagrant创建centos虚拟化环境。

    本节讲解如何在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/ |
    +--------------------------+----------------------------+
    

    修改编码格式成功!

  • 相关阅读:
    水晶苍蝇拍:微薄投资感悟摘录(四) (2012-04-03 14:11:01)
    水晶苍蝇拍:投资感悟(三)(手打,有删减)
    水晶苍蝇拍:投资感悟(二)(2011-12-27 08:17:54)
    leetcode -- String to Integer (atoi)
    leetcode -- Longest Palindromic Substring
    leetcode -- Longest Substring Without Repeating Characters
    leetcode -- Add Two Numbers
    QQ截图工具截取
    LUA学习笔记(第5-6章)
    Lua5.2 请求 luasocket 相关模块时的 multiple-lua-vms-detected
  • 原文地址:https://www.cnblogs.com/sunBinary/p/10970890.html
Copyright © 2011-2022 走看看