標籤:編譯 建議 get ext packages 登入系統 初始化 5.6 .sh
一、MySQL 的編譯安裝
準備工作
1、查看是否已經安裝過MySQL,如果安裝過建議使用(-e)將其卸載。
[[email protected] ~]# rpm -q mysql-server mysql ##查看是否有安裝過MySQL
[[email protected] ~]# mount /dev/cdrom /mnt/ ##掛載光碟片檔案
[[email protected] ~]# rpm -ivh /mnt/Packages/ncurses-devel-5.9-13.20130511.el7.x86_64.rpm ##安裝ncurses-devel支援包
2、MySQL 5.X 版本需要cmake編譯安裝,所以需要安裝cmake包。
[[email protected] ~]# tar zxf cmake-2.8.6.tar.gz
[[email protected] ~]# cd cmake-2.8.6/
[[email protected] cmake-2.8.6]# ./configure
[[email protected] cmake-2.8.6]# gmake && gmake install
源碼編譯及安裝
1、建立運行使用者(mysql),此使用者不需要登入系統,可以不建立宿主目錄。
[[email protected] cmake-2.8.6]# groupadd mysql
[[email protected] cmake-2.8.6]# useradd -M -s /sbin/nologin mysql -g mysql
2、解壓下載好的源碼包,解壓目錄/usr/src
[[email protected] ~]# tar zxf mysql-5.6.36.tar.gz -C /usr/src/
[[email protected] ~]# cd /usr/src/mysql-5.6.36/
3、配置mysql、以便支援更多功能
[[email protected] 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 ##指定預設使用的字元集編碼(如:utf8) DDEFALUT_COLLATION ##指定預設使用的字元集校對規則,utf8_general_ci是適用於utf-8字元集的通用規則 DWITH_HXTRA_CHARSETS ##指定額外支援的其他字元集編碼4、編譯安裝 [[email protected] mysql-5.6.36]# make [[email protected] mysql-5.6.36]# make install
安裝後的其他調整
1、對資料庫進行使用權限設定、屬主:屬組
[[email protected] ~]# chown -R mysql:mysql /usr/local/mysql
2、建立設定檔,因centos7預設支援mariadb資料庫,所以系統預設的/etc/my.cof設定檔是MariaDB的設定檔、
而在MySQL來源目錄中的support-files檔案夾下,提供了MySQL資料可的樣本設定檔my-default.cof檔案,所以
我們需要拷貝my-default.cof檔案到/etc路徑下,並刪除my.cof
[[email protected] mysql-5.6.36]# rm -rf /etc/my.cof [[email protected] mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf [[email protected] ~]# vi /etc/my.cnf ##手動指定pid檔案 pid-file=/usr/local/mysql/data/mysql.pid :wq3、初始化資料庫,使使用者mysql可以正常登陸,所以需要運行使用者mysql的身份執行初始化指令碼mysql_install_db,指定資料庫存放路徑等。 [[email protected] mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/4、設定環境變數,為了方便在認可目錄下使用mysql命令,需要在/etc/profile設定環境變數 [[email protected] mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile [[email protected] ~]# source /etc/profile5、添加系統服務 [[email protected] mysql-5.6.36]# cp support-files/mysql.server /usr/local/mysql/bin/mysqld.sh [[email protected] mysql-5.6.36]# chmod +x /usr/local/mysql/bin/mysqld.sh [[email protected] ~]# vi /usr/lib/systemd/system/mysqld.service [Unit] Description=The Apache HTTP Server After=network.target [Service] User=mysql Group=mysql Type=forking PIDFile= ##PID檔案為空白 ExecStart=/usr/local/mysql/bin/mysqld.sh start ExecStop=/usr/local/mysql/bin/mysqld.sh stop [Install] WantedBy=multi-user.target :wq [[email protected] ~]# systemctl start mysqld ##啟動MySQL [[email protected] ~]# systemctl enable mysqld ##設定為開機啟動 [[email protected] ~]# systemctl status mysqld ##查看啟動狀態 [[email protected] ~]# netstat -anpt | grep mysqld ##過濾mysql連接埠狀態
二、訪問MySQL資料庫
1、登陸MySQL伺服器:預設使用者為root 密碼為空白
1)無密碼登陸
[[email protected] ~]# mysql -u root ##“-u”選項用於指定認證使用者
2)有密碼登陸
[[email protected] ~]# mysql -u root -p ##“-p”選項來進行密碼校正
3)設定登入mysql的root使用者密碼
[[email protected] ~]# mysqladmin -u root password 123123
2、執行MySQL動作陳述式
mysql> STATUS; ##"STATUS;"語句可以查看當前資料庫的基本狀態
3、退出mysql作業環境
mysql> exit ##退出可以使用"exit"或"quit"命令退出mysql編輯器
三、使用mysql資料庫
查看資料庫結構
1、查看資料庫系統中有哪些資料庫
mysql> show databases;
2、進入某個資料庫
mysql> use mysql;
3、查看當前資料庫中有哪些表
mysql> show tables;
4、查看錶結構
mysql> describe user;
建立及刪除庫和表
1、建立資料庫,名為benet
mysql> CREATE DATABASE benet;
Query OK, 1 row affected (0.00 sec)
2、在資料庫中建立表,表中兩列user_name不允許為空白,user_passwd設定為主鍵,
mysql> use benet
Database changed
mysql> CREATE TABLE users (user_name char(16) NOT NULL,user_passwd char(100) DEFAULT ‘‘,PRIMARY KEY (user_name));
Query OK, 0 rows affected (0.03 sec)
3、刪除一個資料表
mysql> DROP TABLE benet.users;
Query OK, 1 row affected (0.00 sec)
4、刪除一個資料庫
mysql> DROP DATABASE benet;
Query OK, 1 row affected (0.00 sec)
管理表中的資料記錄
1、向表中插入資料
mysql> use benet;
Database changed
mysql> insert into users (user_name,user_passwd) values (‘zhangsan‘,PASSWORD(‘123123‘)); ##方法一
Query OK, 1 row affected (0.00 sec)
mysql> insert into users values (‘lisi‘,PASSWORD(‘123123‘)); ##方法二 Query OK, 1 row affected (0.00 sec)2、查詢資料記錄 mysql> select * from benet.users; ##查詢表中所有列 +-----------+-------------------------------------------+ | user_name | user_passwd | +-----------+-------------------------------------------+ | lisi | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | | zhangsan | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | +-----------+-------------------------------------------+ 2 rows in set (0.00 sec) mysql> select user_name,user_passwd from benet.users where user_name=‘zhangsan‘; ##按條件查詢 +-----------+-------------------------------------------+ | user_name | user_passwd | +-----------+-------------------------------------------+ | zhangsan | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | +-----------+-------------------------------------------+ 1 row in set (0.00 sec)3、修改資料記錄 mysql> update benet.users set user_passwd=PASSWORD(‘‘) WHERE user_name=‘lisi‘; ##修改users表中zhangsan的密碼為空白 Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from benet.users; +-----------+-------------------------------------------+ | user_name | user_passwd | +-----------+-------------------------------------------+ | lisi | | | zhangsan | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | +-----------+-------------------------------------------+ 2 rows in set (0.00 sec) 修改root使用者密碼 mysql> update mysql.user set password=PASSWORD(‘123456‘) WHERE user=‘root‘; Query OK, 4 rows affected (0.00 sec) Rows matched: 4 Changed: 4 Warnings: 0 mysql> FLUSH PRIVILEGES; ##重新整理使用者授權,使其立即生效。 Query OK, 0 rows affected (0.00 sec) mysql> EXIT Bye [[email protected] ~]# mysql -u root -p Enter password: ##輸入新密碼“123456”4、刪除資料記錄 mysql> delete from benet.users where user_name=‘lisi‘; ##刪除表中user_name列為‘zhangsan’的使用者 Query OK, 1 row affected (0.00 sec) mysql> select * from benet.users; +-----------+-------------------------------------------+ | user_name | user_passwd | +-----------+-------------------------------------------+ | zhangsan | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | +-----------+-------------------------------------------+ 1 row in set (0.00 sec)資料庫中預設添加了來賓使用者和本機使用者(user,password均為空白),出去安全考慮,應該產出這些來賓使用者, mysql> select user,host,password from mysql.user where user=‘‘; ##顯示user列為空白的使用者資料 +------+-----------------------+----------+ | user | host | password | +------+-----------------------+----------+ | | localhost | | | | localhost.localdomain | | +------+-----------------------+----------+ 2 rows in set (0.00 sec) mysql> delete from mysql.user where user=‘‘; ##刪除mysql.user表中user列為空白的欄位 Query OK, 2 rows affected (0.00 sec)
四、資料庫使用者授權
1、授予許可權,使用“GRANT”子句,當制動使用者不存在時,grant語句會建立新使用者,否則,grant語句會修改使用者資訊。
格式:GRANT 許可權列表 ON 庫名.表名 TO 使用者名稱@來源地址 [ IDENTIFIED BY ‘密碼‘ ]
許可權列表:用於列出授權使用的各種資料庫操作,以逗號進行分割,如“select,insert,update”。使用“all”表示所有授權,可執行任何操作。 庫名.表名:用於指定授權操作的庫和表的名稱,其中可以使用萬用字元“*”。例如,使用“benet.*”。表示授權操作的對象為“benet”資料庫中的所有表。 使用者名稱@來源地址:用於指定的使用者名稱稱和允許訪問的客戶機地址,即誰能串連,從哪裡串連。來源地址可以使網域名稱,IP地址,還可以使用“%”萬用字元, 表示某個地區或網段內的所有地址,如“%。benet.com” “192.168.1.%”等等。 IDENTIFIED BY:用於設定用串連資料庫時所使用的密碼字串,在建立使用者時,若省略“IDENTIFIED BY”部分,則使用者的密碼將為空白。 mysql> GRANT select on benet.* to ‘xiaoming‘@‘localhost‘ IDENTIFIED BY ‘123123‘; ##使用grant語句建立xiaoming使用者 Query OK, 0 rows affected (0.01 sec) 並授予查詢許可權2、查看許可權 mysql> show grants for ‘xiaoming‘@‘localhost‘; +-----------------------------------------------------------------------------------------------------------------+ | Grants for [email protected] | +-----------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO ‘xiaoming‘@‘localhost‘ IDENTIFIED BY PASSWORD ‘*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1‘ | | GRANT SELECT ON `benet`.* TO ‘xiaoming‘@‘localhost‘ | +-----------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)3、撤銷許可權;REVOKE語句:用於撤銷指定使用者對資料庫的許可權,車修好後使用者仍然可以串連資料庫,單將被禁止執行對應資料庫的操作。格式:REVOKE 許可權列表 ON 資料庫名.表名 FROM 使用者名稱@來源地址mysql> revoke all on benet.* from ‘xiaoming‘@‘localhost‘; ##撤銷“xiaoming”對“benet.*”的所有許可權Query OK, 0 rows affected (0.00 sec)mysql> show grants for ‘xiaoming‘@‘localhost‘; ##確認已撤銷對benet資料庫的許可權+-----------------------------------------------------------------------------------------------------------------+| Grants for [email protected] |+-----------------------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO ‘xiaoming‘@‘localhost‘ IDENTIFIED BY PASSWORD ‘*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1‘ |+-----------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)``
(1)centos7--MySQL-5.6.36 Install Manual