數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今六十多年前,隨着信息技術和市場的發展,特別是二十世紀九十年代之後,數據管理再也不僅僅是存儲和管理數據,而轉變成用戶所須要的各類數據管理的方式。數據庫有不少種類型,從最簡單的存儲有各類數據的表格到可以進行海量數據存儲的大型數據庫系統都在各個方面獲得了普遍的應用。mysql
數據庫,簡單來講是自己可視爲電子化的文件櫃--存儲電子文件的處所,用戶能夠對文件中的數據進行新增、截取、更新、刪除等操做。c++
數據庫指的是以必定方式儲存在一塊兒、能爲多個用戶共享、具備儘量小的冗餘度的特色、是與應用程序彼此獨立的數據集合。sql
CentOS7虛擬機一臺數據庫
[MySQL的源代碼編譯包]MySQL-5.7.17.tar.gzvim
c++運行庫boost_1_59_0安全
###實驗配置
首先安裝相關的環境包數據結構
[root@bogon ~]# yum install -y ncurses ncurses-devel bison cmake gcc gcc-c++ socket
建立MySQL的管理用戶ide
[root@bogon ~]# useradd -s /sbin/nologin mysql命令行
解壓縮相應的軟件包(MySQL-5.7.17)
[root@bogon mysql]# tar zxvf mysql-5.7.17.tar.gz -C /opt
解壓縮c++運行庫至/usr/local/目錄下
[root@bogon mysql]# tar zxvf boost_1_59_0.tar.gz -C /usr/local/
切換目錄到/usr/local/目錄下,而後對boost文件進行重命名
[root@bogon local]# mv boost_1_59_0/ boost
而後切換至MySQL的安裝目錄,進行編譯配置
[root@bogon mysql-5.7.17]# cmake \ > -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ > -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ > -DSYSCONFDIR=/etc \ > -DSYSTEMD_PID_DIR=/usr/local/mysql \ > -DDEFAULT_CHARSET=utf8 \ > -DDEFAULT_COLLATION=utf8_general_ci \ > -DWITH_INNOBASE_STORAGE_ENGINE=1 \ > -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ > -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ > -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ > -DMYSQL_DATADIR=/usr/local/mysql/data \ > -DWITH_BOOST=/usr/local/boost \ > -DWITH_SYSTEMD=1
配置完成後就是進行二進制的轉換和編譯安裝了
[root@bogon mysql-5.7.17]# make && make install
修改mysql工做文件夾的屬主和屬組
[root@bogon mysql-5.7.17]# chown -R mysql:mysql /usr/local/mysql/
修改MySQL的主配置文件
[root@bogon mysql-5.7.17]# vim /etc/my.cnf //在行首插入 [client] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock [mysql] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock //刪除原來的mysqld的配置參數,從新插入 [mysqld] user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 character_set_server=utf8 pid-file = /usr/local/mysql/mysqld.pid socket = /usr/local/mysql/mysql.sock server-id = 1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
修改完上面的主配置文件後,修改配置文件的屬主和屬組
[root@bogon mysql-5.7.17]# chown mysql:mysql /etc/my.cnf
添加環境變量
[root@bogon mysql-5.7.17]# echo'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@bogon mysql-5.7.17]# echo 'export PATH' >> /etc/profile
[root@bogon mysql-5.7.17]# source /etc/profile
初始化數據庫
[root@bogon mysql-5.7.17]# cd /usr/local/mysql/ [root@bogon mysql]# [root@bogon mysql]# bin/mysqld \ > --initialize-insecure \ > --user=mysql \ > --basedir=/usr/local/mysql \ > --datadir=/usr/local/mysql/data // **注:初始化這裏可能會遇到一個報錯信息:error:too many arguments (first extra is '');error:Aborting** 解決方法:切換目錄/usr/local/mysql/,ls查看當前目錄下有哪些文件,應該會找到一個data(數據)的文件夾,可是文件夾可能爲空,因此這裏咱們直接rm -rf data;刪除data文件夾便可,而後繼續初始化數據庫
最後將mysqld的管理腳本拷貝到系統目錄下,使系統可以識別
[root@bogon mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ [root@bogon mysql]# systemctl daemon-reload //刷新識別 [root@bogon mysql]# systemctl start mysqld //啓動MySQL服務 [root@bogon mysql]# netstat -anpt | grep 3306 //查看MySQL的3306端口是否被開啓
最後關閉防火牆及加強性安全功能,就能夠設置登陸數據庫的密碼了
[root@bogon mysql]# systemctl stop firewalld.service [root@bogon mysql]# setenforce 0
此時就能夠mysql數據庫的登入了,可是有個問題,初始化數據庫時默認生成了一個密碼,但這個密碼是空的,因此咱們還要進行密碼的設定
[root@bogon mysql]# mysqladmin -u root -p password "abc123" 而後會提示輸入密碼: 由於初始化時生成的密碼是空的,因此直接回車,而後密碼就設置成功了 此時在從新登入一次,使用新密碼abc123 就能夠登入MySQL命令行模式了。
而後咱們進行數據庫的基本操做
[root@localhost ~]# mysql -u root -p Enter password: //輸入密碼,咱們設置的密碼是abc123 mysql> show databases; //查看數據庫信息 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | school | | sys | +--------------------+ 5 rows in set (0.01 sec)
mysql> create database school; //添加一個school的數據庫 Query OK, 1 row affected (0.00 sec)
mysql> use school; //進入school的數據庫 Database changed
mysql> create table info (id int,name char(10),score decimal(5,2)); //建立一個表 Query OK, 0 rows affected (0.11 sec)
mysql> desc info; //查看錶結構 +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | char(10) | YES | | NULL | | | score | decimal(5,2) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
mysql> select * from info; //查看錶內數據 Empty set (0.00 sec) //這裏還未插入任何數據,因此爲空
mysql> insert into info (id,name,score) values (1,'zhangsan',75.5); Query OK, 1 row affected (0.00 sec) mysql> insert into info (id,name,score) values (2,'lisi',77.5); Query OK, 1 row affected (0.00 sec) mysql> insert into info (id,name,score) values (3,'wangwu',80); Query OK, 1 row affected (0.00 sec) //連續插入三個數據
mysql> select * from info; //此時在查看錶內數據,發現就有數據存入在表內 +------+----------+-------+ | id | name | score | +------+----------+-------+ | 1 | zhangsan | 75.50 | | 2 | lisi | 77.50 | | 3 | wangwu | 80.00 | +------+----------+-------+ 3 rows in set (0.00 sec)
mysql> update info set name='zhaoliu' where id=3; //修改id=3的數據的name爲zhaoliu Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from info; //再次查看錶信息 +------+----------+-------+ | id | name | score | +------+----------+-------+ | 1 | zhangsan | 75.50 | | 2 | lisi | 77.50 | | 3 | zhaoliu | 80.00 | //原先的wangwu就被修改成zhaoliu +------+----------+-------+ 3 rows in set (0.00 sec)
mysql> delete from info where id=2; //刪除id=2的表內數據 Query OK, 1 row affected (0.00 sec) mysql> select * from info; +------+----------+-------+ | id | name | score | +------+----------+-------+ | 1 | zhangsan | 75.50 | | 3 | zhaoliu | 80.00 | //這裏原先的id=2的數據lisi就被刪除了 +------+----------+-------+ 2 rows in set (0.00 sec)
mysql> drop table info; //刪除info表 Query OK, 0 rows affected (0.01 sec) mysql> select * from info; //此時在查看錶信息,就會報錯,該表不存在,由於已經被咱們刪除了 ERROR 1146 (42S02): Table 'school.info' doesn't exist
mysql> show databases; //先查看有哪些數據庫 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | school | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> drop database school; //刪除school的數據庫 Query OK, 0 rows affected (0.00 sec) mysql> show databases; //再次查看時,就能夠看到school的數據庫已經被刪除了 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec)
更多MySQL內容請期待;MySQL索引與事務、MySQL數據庫管理。。。。。。。。