前言
MySQL是個(gè)關(guān)系型數(shù)據(jù)庫(kù),5.0版本后胖替,其默認(rèn)的InnoDB引擎引入了事務(wù)機(jī)制研儒,于是開(kāi)始受到企業(yè)用戶的青睞。(題外話独令,MySQL是被Oracle收購(gòu)的端朵,于是,Oracle和DB2幾乎壟斷了大型企業(yè)的關(guān)系型數(shù)據(jù)庫(kù)市場(chǎng)燃箭,也幾乎壟斷了互聯(lián)網(wǎng)公司的關(guān)系型數(shù)據(jù)庫(kù)市場(chǎng)......)因此冲呢,作為一個(gè)有抱負(fù)的程序員,學(xué)好MySQL是多么的重要招狸。
單節(jié)點(diǎn)MySQL的安裝
單節(jié)點(diǎn)MySQL敬拓,肯定不會(huì)是企業(yè)正常的生產(chǎn)環(huán)境下使用的MySQL方案。因此裙戏,我推薦CentOS系統(tǒng)下使用yum安裝乘凸,Ubuntu系統(tǒng)下使用apt安裝。
yum安裝
替換yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo mirrors.163.com/.help/CentOS7-Base-163.repo
如何講yum源更改回來(lái)累榜?营勤?
更新緩存
yum clean all
yum makecache
yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
-y表示不需要確認(rèn)安裝哪些程序包,默認(rèn)都是yes
yum install mysql-community-server -y
yum install perl -y
yum install net-tools -y
chmod -R 777 /var/lib/mysql
mysqld --initialize
chmod -R 777 /var/lib/mysql/*
service mysql/mysqld start
service mysql/mysqld stop
service mysql/mysqld restart
查看初始root密碼
grep 'temporary password' /var/log/mysqld.log
apt安裝
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
dpkg -i mysql-apt-config_0.8.12-1_all.deb
執(zhí)行完dpkg,會(huì)出現(xiàn)下方的圖示葛作。這個(gè)是讓你配置的寿羞,如果不需要換mysql版本,直接選ok就行
apt-get update
apt-get install mysql-server
執(zhí)行mysql安裝過(guò)程中赂蠢,要為root設(shè)置密碼绪穆,在如下頁(yè)面設(shè)置密碼
service mysql status
service mysql stop
service mysql start
service mysql restart
解決一個(gè)報(bào)錯(cuò)
Navicat 鏈接mysql 顯示 Clinet dose not support authentication protocol request by server ;consider upgrading MySQL client,需要做如下事情:
1 在命令窗口 輸入mysql -uroot -p 首先通過(guò)cmd進(jìn)入mysql
2 更改加密方式
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.10 sec)
3 更改密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
Query OK, 0 rows affected (0.35 sec)
這個(gè)密碼是navicat鏈接mysql 的密碼
insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
這樣就創(chuàng)建了一個(gè)名為:test 密碼為:1234 的用戶客年。
先建立用戶
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL ON databaseName.* TO 'username'@'localhost';
GRANT ALL ON databaseName.* TO 'username'@'%';
ALTER USER 'username'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
flush privileges;
注意:此處的"localhost"霞幅,是指該用戶只能在本地登錄,不能在另外一臺(tái)機(jī)器上遠(yuǎn)程登錄量瓜。如果想遠(yuǎn)程登錄的話,將"localhost"改為"%"途乃,表示在任何一臺(tái)電腦上都可以登錄绍傲。也可以指定某臺(tái)機(jī)器可以遠(yuǎn)程登錄。
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
ALTER USER 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;
2.為用戶授權(quán)
授權(quán)格式:grant 權(quán)限 on 數(shù)據(jù)庫(kù).* to 用戶名@登錄主機(jī) identified by "密碼";
mysql>grant all privileges on testDB.* to test@localhost identified by '1234';
mysql>flush privileges;//刷新系統(tǒng)權(quán)限表
格式:grant 權(quán)限 on 數(shù)據(jù)庫(kù).* to 用戶名@登錄主機(jī) identified by "密碼";
如果想指定部分權(quán)限給一用戶耍共,可以這樣來(lái)寫(xiě):
mysql>grant select,update on testDB.* to test@localhost identified by '1234';
mysql>flush privileges; //刷新系統(tǒng)權(quán)限表
授權(quán)test用戶擁有所有數(shù)據(jù)庫(kù)的某些權(quán)限:
mysql>grant select,delete,update,create,drop on . to test@"%" identified by "1234";
//test用戶對(duì)所有數(shù)據(jù)庫(kù)都有select,delete,update,create,drop 權(quán)限烫饼。
//@"%" 表示對(duì)所有非本地主機(jī)授權(quán),不包括localhost试读。(localhost地址設(shè)為127.0.0.1杠纵,如果設(shè)為真實(shí)的本地地址,不知道是否可以钩骇,沒(méi)有驗(yàn)證比藻。)
//對(duì)localhost授權(quán):加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。
3.刪除用戶
Delete FROM user Where User='test' and Host='localhost';
drop database testDB; //刪除用戶的數(shù)據(jù)庫(kù)
drop user 用戶名@'%';
drop user 用戶名@ localhost;
update mysql.user set password=password('新密碼') where User="test" and Host="localhost";