本文將會結(jié)束MySQL的安裝式矫,密碼設(shè)置,服務(wù)啟動役耕,遠程鏈接等內(nèi)容采转。
MySQL安裝
Linux|Unix|Centos
Linux平臺上推薦使用RPM包來安裝Mysql,使用rpm
命令或者apt-get
命令瞬痘,安裝下面模塊:
- MySQL - MySQL服務(wù)器
- MySQL-client - MySQL 客戶端程序故慈,用于連接并操作Mysql服務(wù)器
- MySQL-devel - 庫和包含文件,如果你想要編譯其它MySQL客戶端框全,例如Perl模塊察绷,則需要安裝該RPM包
- MySQL-bench - MySQL數(shù)據(jù)庫服務(wù)器的基準和性能測試工具
下面演示用yum
命令進行安裝,首先檢查當(dāng)前系統(tǒng)是否已經(jīng)安裝低版本的mysql竣况,如果安裝就略過克婶,如果你覺得版本太低,則可以卸載重新安裝丹泉。
# 檢測系統(tǒng)是否自帶安裝 mysql
rpm -qa | grep mysql
# 下面命令可以強力卸載mysql
rpm -e --nodeps mysql
最后使用yum
命令安裝Mysql組件:
yum install mysql-server mysql mysql-devel
另外也可以到官網(wǎng)下載安裝包:https://dev.mysql.com/downloads/repo/yum/
選擇合適版本的安裝包情萤,wget之后安裝即可。
# 獲取mysql源
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# 安裝Mysql源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
# 檢測源是否安裝成功
yum repolist enabled | grep "mysql.*-community.*"
# 安裝mysql
yum install mysql-community-server
Windows平臺安裝MySQL
Windows 上安裝 MySQL 相對來說會較為簡單摹恨,可以直接下載安裝包筋岛,安裝即可:https://dev.mysql.com/downloads/installer/
MySQL的基本配置
在安裝完MySQL之后,需要修改配置文件晒哄。不同的系統(tǒng)不一樣睁宰,Centos為:/etc/my.cnf
肪获,Windows為安裝目錄下的my.ini
,可以修改default.ini1
柒傻。配置信息如下:
[mysql]
# 設(shè)置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
# 設(shè)置3306端口
port = 3306
# 設(shè)置mysql的安裝目錄
basedir=D:\wamp\mysql-5.7.13
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)存放目錄
datadir=D:\wamp\sqldata
# 允許最大連接數(shù)
max_connections=20
# 服務(wù)端使用的字符集默認為8比特編碼的latin1字符集
character-set-server=utf8
# 創(chuàng)建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
在Windows平臺孝赫,需要在DOS窗口中輸入以下命令(需要加環(huán)境變量或者去到安裝目錄的bin目錄下):
# 初始化MySQL
mysqld --initialize-insecure
# 安裝MySQL服務(wù)
mysqld -install
# 啟動mysql服務(wù)
net start mysqld
# 進入mysql
mysql -u root -p
# 設(shè)置密碼
mysqladmin -u root password *****
在Linux平臺也是類似,需要注意有的版本安裝完之后红符,會給root生成一個默認密碼或者不使用密碼就可以登錄青柄。默認密碼一在日志文件中:/var/log/mysqld.log
mysql設(shè)置密碼(找回密碼)
可以在命令行設(shè)置密碼,不用登錄mysql预侯,前提是知道舊密碼致开,使用下面的命令:
mysqladmin -u root -p oldpassword newpasswd
有時我們可能忘記密碼,還有可能遇到下面的問題:
Access denied for user 'root'@'localhost' to database 'mysql'
這時就可以進入安全模式強制修改密碼萎馅。Linux平臺步驟如下
# 關(guān)閉服務(wù)
service mysqld stop
# 繞過密碼進入安全模式
mysqld_safe --skip-grant-table
# 下面進入mysql双戳,修改密碼
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD('123456') where user='root'
mysql> FLUSH PRIVILEGES;
需要特別注意修改密碼后要刷新權(quán)限。
mysql遠程連接
一般來說糜芳,mysql安裝后是默認不允許遠程連接的飒货,這個時候在其他地方使用mysql就會報下面的錯誤:
Access denied for user 'root'@'localhost' to database 'mysql'
Access denied for user ''@'localhost' to database 'mysql'
關(guān)于user表
mysql中默認有一個數(shù)據(jù)庫,名稱為mysql
耍目,其中有一張表user
膏斤,記錄數(shù)據(jù)的所有用戶和權(quán)限。
use mysql;
select host,user,password from user;
其中user表示用戶名邪驮,host表示允許該用戶訪問的主機莫辨,password為該用戶訪問密碼。
可以直接對這個表進行增刪改查毅访,從而添加用戶沮榜。
修改密碼
可以直接修改user
表中的記錄達到修改密碼的目的。
# 修改password的值
update user set password=password('123456') where user='root' and host='localhost';
# 刷新權(quán)限
flush privileges;
還可以使用set password
命令
set password for root@localhost = password('123');
另外在知道舊密碼的時候喻粹,可以用mysqladmin
在命令行修改密碼:
# mysqladmin -u{username} -p{old password} password {new_password}
mysqladmin -uroot -p123456 password 654321
允許遠程訪問
如果需要允許某個用戶遠程訪問數(shù)據(jù)庫蟆融,可以有兩個辦法
- 直接編輯mysql.user表,修改host字段
- 使用授權(quán)語句對用戶進行授權(quán)
比如下面運行root用戶可以遠程訪問守呜,可以有如下操作:
# 直接修改表
update user set host = '%' where user = 'root';
# 使用授權(quán)語句
grant all privileges on *.* to root@'%' identified by "123456";
# 使用授權(quán)語句可以直接新增一個用戶
grant all privileges on *.* to 'uusama'@'192.169.127.44' identified by '123456';
# 最后都需要刷新權(quán)限
flush privileges;
在grant語句中型酥,.部分,左邊的表示所有數(shù)據(jù)庫查乒,右邊的表示所有數(shù)據(jù)表
grant語法介紹
grant用來進行用戶授權(quán)弥喉,語法如下:
GRANT {權(quán)限列表} ON {庫名}.{表名}TO {用戶名}@{來源地址} [IDENTIFIEDBY '{密碼}']
其中{}部分的參數(shù)解析如下:
- 權(quán)限列表:用于列出授權(quán)使用的各種數(shù)據(jù)庫操作,以逗號分隔玛迄。All表示所有權(quán)限由境;
- 庫名.表名:用于指定授權(quán)操作的庫和表的名稱,可以使用 * 進行通配,表示所有庫或表
- 用戶名@來源地址:用于指定用戶名稱和允許訪問的客戶機地址來源的地址虏杰,可以是域名讥蟆、IP地址,還可以使用“%”通配符纺阔,表示某個區(qū)域或網(wǎng)段內(nèi)的所有地址瘸彤。如:“%.example.com”、“192.168.%.%”等
- IDENTIFIED BY:設(shè)置用戶連接數(shù)據(jù)庫時所使用的密碼字符串笛钝。在新建用戶時钧栖,若省略則用戶的密碼將為空
遠程不能訪問時的問題
有時會遇到訪問數(shù)據(jù)庫的出現(xiàn)Access denied的問題,這個問題的原因可能有:
- 用戶名密碼錯誤婆翔,比如多了空格等,此時改正即可
- 該用戶不允許遠程主機訪問掏婶,參照上面的方法配置遠程訪問
- 防火墻沒有開發(fā)指定的端口啃奴,開放相應(yīng)的端口即可
- 所使用服務(wù)器對數(shù)據(jù)庫訪問做了限制,比如阿里云的組策略雄妥,需要開發(fā)相應(yīng)端口最蕾,有的公司內(nèi)網(wǎng)機器也不允許外部訪問
- root用戶的限制,有的訪問終端會對root用戶進行限制老厌,這時可以添加一個新用戶
- 綁定地址有誤瘟则,如果mysql配置中綁定ip問127.0.0.1,可能外部機器訪問不了枝秤,這時可以修改配置文件醋拧,注釋掉:bind-address = 127.0.0.1