基於 Linux 安裝 MySQL 及基本操做

爲了提供更豐富、更強大的 web 應用功能,每每還須要有後臺數據庫、網頁編程等多種角色的支持。
在通常小中型企業中,最經常使用的數據庫就是MySQL,MySQL 是一個真正多線程、多用戶的 SQL 數據庫服務,憑藉其高性能、高可靠和易於使用的特性,成爲服務器領域中最受歡迎的開源數據庫系統。
MySQL 源碼編譯包(mysql-5.6.tar.gz):
https://pan.baidu.com/s/1pgYHB8kyJ7U1zl2cm4XUcw
提取碼: y8py
MySQL 5.X 系列版本的使用最爲普遍,該版本穩定性、兼容性都不錯
其官方站點爲:http://www.mysql.com
準備工做:
爲了不發生端口衝突、程序衝突等現象,建議先查看 MySQL 的安裝狀況,確認沒有使用以 RPM 安裝的MySQL包
[root@mysql /]# rpm -qa | grep mysql
若是有的話,建議將其卸載:rpm -q mysql-server mysql
而後就是須要安裝 ncurses 包,檢測到已經安裝三個,還缺一個,因此須要掛載系統光盤,進行安裝mysql

[root@mysql /]# rpm -qa | grep ncurses
ncurses-5.9-13.20130511.el7.x86_64
ncurses-libs-5.9-13.20130511.el7.x86_64
ncurses-base-5.9-13.20130511.el7.noarch
[root@mysql /] # mount /dev/sr0 /media/
[root@mysql Packages]# rpm -ivh ncurses-devel-5.9-13.20130511.el7.x86_64.rpm 
warning: ncurses-devel-5.9-13.20130511.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:ncurses-devel-5.9-13.20130511.el7################################# [100%]

MySQL 5.X 系列版本須要 cmake 編譯安裝,因此須要先安裝 cmake 包:web

[root@mysql media]# tar zxf cmake-2.8.6.tar.gz -C /usr/src/
[root@mysql media]# cd /usr/src/cmake-2.8.6/
[root@mysql cmake-2.8.6]# ./configure 
[root@mysql cmake-2.8.6]# gmake && gmake install           # 過程會很長

源碼編譯及安裝:
建立運行用戶:sql

[root@mysql /]# groupadd mysql
[root@mysql /]# useradd -M -s /sbin/nologin mysql -g mysql    # -M 不建立宿主目錄   -s 指定shell環境   -g 指定加入組

解包:
將下載的 mysql 源碼包解壓:shell

[root@mysql media]# tar zxf mysql-5.6.36.tar.gz -C /usr/src/
[root@mysql media]# cd /usr/src/mysql-5.6.36/

配置:
在內容豐富、結構龐大的企業網站中,可能會用到多種字符集的網頁,相應地數據庫系統也應該支持不一樣的字符集編碼。在配置過程當中,能夠將默認使用的字符集設置爲 utf-8,並添加字符集的支持。
注意注意注意:接下來輸入的命令須要區分大小寫,一個標點符號也不能錯,錯了就得從新來過,寫完命令以後必定要耐心檢查一下數據庫

[root@mysql mysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
-DSYSCONFDIR=/etc 
-DDEFAULT_CHARSET=utf8 
-DDEFAULT_COLLATION=utf8_general_ci                    # 每一個「-」前都有空格
-DWITH_EXTRA_CHARSETS=all

各選項含義:
--DCMAKE_INSTALL_PREFIX:指定將 MySQL 數據庫程序安裝到某目錄下
--DSYSCONFDIR:指定初始化參數文件目錄
--DDEFAULT_CHARSET:指定默認使用的字符集編碼
--DDEFAULT_COLLATION:指定默認使用的字符集校對規則,utf8_general_ci 是適用於 utf-8 字符集的通用規則 
--DWITH_EXTRA_CHARSETS:指定額外支持的其餘字符集編碼

[root@mysql mysql-5.6.36]# make && make install #編譯並安裝  過程會很漫長
安裝後的其餘調整:
對數據庫的目錄進行權限設置:
[root@mysql ~]# chown -R mysql:mysql /usr/local/mysql
創建配置文件:
在 Centos 7 系統下默認支持 MariaDB 數據庫,所以系統默認的/etc/my.cnf 配置文件中是 MariaDB 的配置文件。而在源碼包目錄中的 support-files 文件夾中,提供了 MySQL 數據庫默認的樣本配置文件 my-default.cnf 文件,因此在啓動以前須要將原有的 my.cnf 文件替換爲 MySQL 提供的配置文件內容。編程

[root@mysql ~]# rm -rf /etc/my.cnf                       # 將原來 etc 文件夾下的 my.cnf 文件刪除
[root@mysql ~]# cp /usr/src/mysql-5.6.36/support-files/my-default.cnf /etc/my.cnf

初始化數據庫:
以運行用戶 mysql 的身份執行初始化腳本 mysql_install_db,指定數據存放目錄vim

[root@mysql ~]# /usr/local/mysql/scripts/mysql_install_db 
--user=mysql 
--basedir=/usr/local/mysql 
--datadir=/usr/local/mysql/data

設置環境變量(爲了方便在任何目錄下使用 mysql 命令,須要在 /etc/profile 設置環境變量):服務器

[root@mysql ~]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@mysql ~]# . /etc/profile                  // 當即生效

添加爲系統服務:多線程

[root@mysql ~]# cp /usr/src/mysql-5.6.36/support-files/mysql.server
/usr/local/mysql/bin/mysqld.sh       # 將服務腳本複製到 MySQL安裝目錄中
[root@mysql ~]# chmod +x /usr/local/mysql/bin/mysqld.sh     # 添加執行權限

[root@mysql /]# vim /usr/lib/systemd/system/mysqld.service 

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql                                     # 指定程序運行的用戶帳號
Group=mysql                                  # 指定程序運行的組帳號

Type=forking
PIDFile=/usr/local/mysql/data/mysql.com.pid          # 注意pid前要輸主機名,輸入以前先查看一下本機主機名
ExecStart=/usr/local/mysql/bin/mysqld.sh  start
ExecStop=/usr/local/mysql/bin/mysqld.sh  stop

[Install]
WantedBy=multi-user.target
[root@mysql /]# systemctl enable mysqld              # 設置開機自啓
[root@mysql /]# systemctl status mysqld               # 檢查服務啓動狀態
[root@mysql /]# systemctl start mysqld                  # 啓動服務

若嫌編寫配置文件麻煩,能夠換另外一種方法:ide

當對/usr/local/mysql/bin/mysqld.sh 賦予執行權限後,繼續如下操做:

[root@mysql-5.6.36]# cp /usr/local/mysql/bin/mysqld.sh /etc/init.d/mysqld
[root@mysql-5.6.36]# vim /etc/init.d/mysqld

基於 Linux 安裝 MySQL 及基本操做
修改後,保存退出。繼續執行以下命令:

[root@localhost mysql-5.6.36]# chkconfig --add mysqld #添加爲系統服務

啓動服務後登錄數據庫:
root 是MySQL的默認管理員

[root@mysql /]# mysql -u root              # 無密碼的時候登錄
[root@mysql /]# mysqladmin -u root password 123456       # 第一次設置密碼
[root@mysql /]# mysqladmin -u root -p password 654321      # 修改密碼,先輸入新密碼
Enter password:                                        # 根據提示輸入舊密碼
[root@mysql /]# mysql -u root -p               # 使用密碼登錄
Enter password:                                         # 根據提示輸入密碼
[root@mysql /]# mysql -u root -p 
 ……       // 省略部份內容
mysql> status                    # 查看當前數據庫的基本信息
mysql> exit                        # 退出 MySQL操做環境  ouit 也行
Bye

查看 MySQL 中有哪些庫:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.03 sec)

查看數據庫中有哪些表:

mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql         |
+---------------------------+
| columns_priv              |
| db                               |
| time_zone_name        |
……      // 省略部份內容
| time_zone_transition   |
| time_zone_transition_type |
| user                      |
+---------------------------+
28 rows in set (0.00 sec)

查看錶的結構:

mysql> describe user;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| name     | char(16) | YES  |     | NULL    |       |
| xingbie  | char(10) | YES  |     | NULL    |       |
| nianling | int(11)  | YES  |     | NULL    |       |
+----------+----------+------+-----+---------+-------+
3 rows in set (0.01 sec)

建立新的數據庫:
mysql> create database users;
建立新的表:

mysql> use users;
mysql> create table user (name char(16),xingbie char(10),nianling int);

刪除一個數據表:

mysql> drop table user;
Query OK, 0 rows affected (0.01 sec)

刪除一個數據庫:

mysql> drop database users;
Query OK, 0 rows affected (0.00 sec)

管理表中的數據記錄:
插入數據記錄:

insert   into  表名(字段一,字段二,...)   values(字段一的值,字段二的值,....)
mysql> insert into user (name,xingbie,nianling) values('zhangsan','nan','25');

查詢數據記錄:

mysql> select * from user;
+----------+---------+----------+
| name     | xingbie | nianling |
+----------+---------+----------+
| zhangsan | nan     |       25 |
+----------+---------+----------+
1 row in set (0.00 sec)

修改數據記錄:

update    表名   set    字段名=‘修改的字段值’ where  條件表達式
mysql> update user set nianling='20' where name='zhangsan';

刪除數據記錄:

delete    from   表名    where   條件表達式;
mysql> delete from user where name='zhangsan';

數據庫用戶受權:
授予權限

grant    權限列表    on    庫名.表名    to  用戶@來源地址   identified    by   ‘密碼’;
mysql> grant select on users.user to zhangsan@localhost identified by  '123456';

使用 GRANT 語句須要注意如下幾點:
基於 Linux 安裝 MySQL 及基本操做
基於 Linux 安裝 MySQL 及基本操做
查看權限:

show    grants    for  用戶名@來源地址;
show    grants    for  'zhangsan'@'localhost';

撤銷權限:

revoke    權限列表    on   數據庫名.表名    from   用戶名@來源地址
revoke    all    on   test.user    from   'zhangsan'@'localhost';
相關文章
相關標籤/搜索