安裝環(huán)境
- 操作系統(tǒng):ReadHat 6 x86_64
- 數(shù)據(jù)庫:Mysql 5.7
準(zhǔn)備工作
檢查是否安裝已有Mysql 或 其依賴包,如有則需要卸載
rpm -qa | grep mysql
rpm -e 包名 --nodeps
安裝
安裝包列表
- mysql-community-common-5.7.17-1.el6.x86_64.rpm
- mysql-community-- libs-5.7.17-1.el6.x86_64.rpm
- mysql-community-client-5.7.17-1.el6.x86_64.rpm
- mysql-community-devel-5.7.17-1.el6.x86_64.rpm (可選)
- mysql-community-server-5.7.17-1.el6.x86_64.rpm
安裝命令
rpm -ivh mysql-community-common-5.7.17-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.17-1.el6.x86_64.rpm
rpm -ivh mysql-community-client-5.7.17-1.el6.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.17-1.el6.x86_64.rpm
rpm -ivh mysql-community-server-5.7.17-1.el6.x86_64.rpm
安裝過程如圖

初始化
在 *nix 系統(tǒng)中,為了保證數(shù)據(jù)庫目錄為與文件的所有者為 mysql 登陸用戶,如果你是以 root 身份運(yùn)行 mysql 服務(wù),需要執(zhí)行下面的命令初始化
mysqld --initialize --user=mysql
如果是以 mysql 身份運(yùn)行,則可以去掉 --user 選項(xiàng)。
--initialize 初始化的,會(huì)生成一個(gè) root 賬戶密碼,密碼在log文件里
/var/log/mysqld.log 文件的最后一行就是root 密碼,該密碼被標(biāo)記為過期,故首次登錄后需要修改root的密碼才能使用MySQL
基礎(chǔ)配置
Mysql默認(rèn)的端口是3306
修改MySQL端口及默認(rèn)存儲(chǔ)引擎
在 /etc/my.cnf 的[mysqld]下面添加或修改
port=6033
default-storage-engine=INNODB
啟動(dòng)停止MySQL
service mysqld status 檢測mysql服務(wù)狀態(tài)
service mysqld start
service mysqld stop
修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Eoy!E!%X';
創(chuàng)建用戶
默認(rèn)root用戶是不能遠(yuǎn)程登錄的,也不提供遠(yuǎn)程功能。故需要?jiǎng)?chuàng)建一個(gè)用戶來用于遠(yuǎn)程登錄
create user trustmo identified by 'f76Ta,2G';
備注:
第一個(gè):用戶名
第二個(gè):用戶名密碼
創(chuàng)建數(shù)據(jù)庫及權(quán)限分配
- 創(chuàng)建數(shù)據(jù)庫并指定字符集
create database updb default charset utf8 collate utf8_bin;
- 分配權(quán)限
grant all on updb.* to trustmo@"%" identified by 'f76Ta,2G' with grant option;
- 刷新緩存使生效
flush privileges;
遇到的問題及解決
表名查詢不區(qū)分大小寫
在 /etc/my.cnf 的[mysqld]下面添加或修改
lower_case_table_names=1
MySQL在Linux下數(shù)據(jù)庫名、表名、列名、別名大小寫規(guī)則是這樣的:
1、數(shù)據(jù)庫名與表名是嚴(yán)格區(qū)分大小寫的;
2、表的別名是嚴(yán)格區(qū)分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變量名也是嚴(yán)格區(qū)分大小寫的;
MySQL在Windows下都不區(qū)分大小寫。
this is incompatible with sql_mode=only_full_group_by錯(cuò)誤
- 查詢當(dāng)前使用的sqlmode
select @@sql_mode;
結(jié)果如下:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
在 /etc/my.cnf 的[mysqld]下面添加或修改
sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
上面的查詢結(jié)構(gòu)集去掉 ONLY_FULL_GROUP_BY 選項(xiàng)