基於centos7搭建MySQL數據庫
一、安裝配置MySQL數據庫:
為了確保MySQL數據庫功能的完整性、可定制性,我采用了源代碼編譯安裝的方式安裝MySQL數據庫系統,MySQL5.X系列版本的使用最為廣泛,該版本的穩定性、兼容性都不錯,下載源碼包的官方站點為https://www.mysql.com 。
現在MySQL已經被甲骨文公司收購了,而且甲骨文公司有意將MySQL發展為一個收費的產品,所以Linux為了避免以後的版權問題,就將MySQL數據庫改成了MariaDB,MariaDB和MySQL在功能和使用上,並沒有太大的區別,不過呢,大多數認為MySQL源碼安裝比使用Linux系統盤中的MariaDB要好一些,所以,還是使用源碼安裝吧,起碼現在還是免費的。
1、為了避免發生程序沖突、端口沖突等問題,可以先執行以下命令,進行刪除系統自帶的mysql程序:
[[email protected] ~]# yum -y erase mysql
2、掛載centos系統盤,安裝ncurses-devel包:
[[email protected] ~]# mount /dev/cdrom /media [[email protected] ~]# cd /media/Packages/ [[email protected] Packages]# rpm -ivh ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm
3、由於mysql 5.x系列版本需要cmake編譯安裝,所以繼續安裝cmake包:
[[email protected] media]# tar zxf cmake-2.8.6.tar.gz -C /tmp #解包
[[email protected] media]# cd /tmp/cmake-2.8.6/
[[email protected] cmake-2.8.6]# ./configure && gmake && gmake install #配置,編譯安裝
4、創建專門用來運行mysql服務的用戶,此用戶不需要直接登錄到系統:
[[email protected] cmake-2.8.6]# groupadd mysql
[[email protected] cmake-2.8.6]# useradd -M -s /sbin/nologin mysql -g mysql
5、將下載的mysql源碼包解壓,並進行配置,編譯及安裝(千萬要註意大小寫,不要打錯配置項,就算錯誤也可以繼續後續的安裝,但是,最後服務是無法啟動的,千萬不要打錯字母,千萬不要打錯字母,千萬不要打錯字母,重要的事情說三遍):
[[email protected] media]#tar zxf mysql-5.6.36.tar.gz -C /tmp #解壓至/tmp目錄
[[email protected] cmake-2.8.6]# cd /tmp/mysql-5.6.36 #切換至展開後的源碼目錄
[[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
[[email protected] mysql-5.6.36]# make && make install #編譯並安裝
上述各個配置項中的含義如下:
6、對數據庫目錄進行權限設置:
[[email protected] mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql
7、建立配置文件:
centos 7系統下默認支持MariaDB數據庫,因此系統默認的/etc/my.cnf配置文件中是MariaDB的配置文件,而在mysql的源碼目錄中提供了mysql數據庫默認的樣本配置文件,在啟動mysql數據庫之前,需要先將原有的my.cnf文件替換為mysql提供的配置文件內容。
[[email protected] mysql-5.6.36]# rm -rf /etc/my.cnf #刪除原有配置文件
[[email protected] mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf
#復制源碼包中的配置文件到/etc/下
8、初始化數據庫:
[[email protected] mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
9、設置環境變量(為了方便在任何目錄下使用mysql命令):
[[email protected] mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[[email protected] mysql-5.6.36]# . /etc/profile #立即生效
10、添加系統服務(兩種方法,看完這一塊,再選擇其中之一即可):
1)、如果希望添加mysqld系統服務,以便通過systemctl 進行管理,可以直接使用源碼包中提供的服務腳本,如下:
[[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
#賦予執行權限
2)、創建mysql系統服務的配置文件/usr/lib/systemd/system/mysqld.service,將其添加為mysqld系統服務:
上面的配置文件純手打,編寫完以後,保存退出後,即可使用systemctl工具來控制mysql數據庫服務了。
方法二:
若嫌編寫配置文件麻煩,可以換另一種方法:
當對/usr/local/mysql/bin/mysqld.sh 賦予執行權限後,繼續以下操作:
[[email protected] mysql-5.6.36]# cp /usr/local/mysql/bin/mysqld.sh /etc/init.d/mysqld
[[email protected] mysql-5.6.36]# vim /etc/init.d/mysqld
修改後,保存退出。繼續執行如下命令:
[[email protected] mysql-5.6.36]# chkconfig --add mysqld #添加為系統服務
以上便是兩種添加系統服務的方法,二選一即可,只是方法二無法使用systemctl enable mysqld命令來設置開機自動啟動。
11、啟動服務並登錄到mysql服務器:
[[email protected] mysql-5.6.36]# systemctl start mysqld #啟動服務
[[email protected] mysql-5.6.36]# systemctl status mysqld #查看服務狀態是否正常
[[email protected] mysql-5.6.36]# mysql -u root #使用root用戶登錄到mysql數據庫
需要註意的是,此root賬號與系統root賬號沒有半毛錢關系,只是湊巧mysql的管理員賬號也是root。初次安裝沒有密碼。可以使用下面命令來進行配置密碼:
[[email protected] /]# mysqladmin -u root password #為用戶root設置密碼
New password: #輸入密碼
Confirm new password: #再次確認
如果用戶有密碼,想要對密碼進行更改,那麽,要使用如下命令:
[[email protected] /]# mysqladmin -u root -p password #更改密碼
Enter password: #輸入舊密碼
New password: #輸入新密碼
Confirm new password: #再次確認
在用戶沒有密碼的情況下,使用以下命令來登錄到mysql數據庫:
[[email protected] mysql-5.6.36]# mysql -u root
若用戶有密碼,則需要加 -p選項:
[[email protected] /]# mysql -u root -p
登錄到mysql服務器後,即可執行SQL語句,每條mysql操作語句以分號“;”結尾,若沒有輸入分號便按了回車鍵,則相當於換行。一切命令不區分大小寫,使用status可以查看當前數據庫服務的基本信息,使用exit可以退出mysql命令工具。
二、數據庫用戶授權及簡單操作(增刪改查):
1、授予權限:
grant 權限列表 on 庫名.表名 to 用戶名@來源地址 [ identified by ‘密碼‘]
使用grant語句,需要註意以下幾點:
grant用法示例:
mysql> grant select on test.* to ‘zhangsan‘@‘localhost‘ identified by ‘123456‘ ;
#創建一個用戶名為張三,密碼為123456,用本地主機登錄,對test庫中所有的表可以執行select語句。
2、查看zhangsan使用本地主機登錄的權限:
mysql> show grants for ‘zhangsan‘@‘localhost‘;
3、撤銷權限:
mysql> revoke all on test.* from ‘zhangsan‘@‘localhost‘;
需要註意的是,賦予權限時是怎麽指定庫和表的,撤銷時必須以同樣的方式指定,若賦予權限時使用test.user(test庫中的user表),那麽,撤銷權限時若使用test.*將會報錯。
4、查看當前服務器中的所有庫:
mysql> show databases;
5、使用use語句切換庫,並且查看庫中的表:
mysql> use mysql; #切換至mysql庫
mysql> show tables; #查看庫中的所有表
6、查看表的結構:
mysql> use mysql; #切換至mysql庫
mysql> describe user; #查看表的結構
7、創建新的庫:
mysql> create database test2; #創建一個名為test2的庫。
8、創建新的表:
mysql> create table 表名 (列名1 類型,列名2 類型,.... ,primary key (主鍵名));
示例,創建一個簡單的員工信息表:
mysql> create table yuangongxinxi (xingming char(16) not null,
xingbie char(4)), nianling int, gonghao int, primary key (gonghao));
#新建表名為員工信息。包含的列有姓名、年齡、工號等,並將工號設置為主鍵。
9、向剛剛的表中插入一條員工信息:
mysql> insert into yuangonxinxi(xingming,xingbie,nianling,gonghao) values (‘zhangsan‘,‘nan‘,‘25‘,‘100‘);
10、查詢表中的數據(也可加where語句來指定查詢特定的行,或使用列名而不用星號來查詢特定的列):
mysql> select * from yuangonxinxi;
11、修改數據記錄:
mysql> update yuangonxinxi set nianling=‘30‘ where xingming=‘zhangsan‘; #修改zhagnsan的年齡為30
12、刪除數據記錄:
mysql> delete from yuangonxinxi where xingming=‘zhangsan‘; #刪除zhangsan的數據記錄
13、刪除剛剛創建的數據表:
mysql> drop table test2.yuangongxinxi;
14、、刪除剛才創建的庫:
mysql> drop database test2;
基於centos7搭建MySQL數據庫