MYSQL學習筆記-00

首先安裝mysql,安裝的服務器訪問不了網絡,所以採用離線模式安裝。安裝環境如下:
查看Linux信息
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

mysql安裝

安裝環境centos7
安裝mysql 5.7.23 x64
mysql官網下載mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar,解壓並按如下順序執行

rpm -ivh mysql-community-common-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-devel-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-compat-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.23-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.23-1.el7.x86_64.rpm

如果有衝突(發生在第二步),可能是服務器中存在mariadb,
rpm -qa|grep mariadb
存在則刪除
rpm -e --nodeps mariadb-libs

到此基本安裝完畢,修改配置文件
vim /etc/my.cnf

skip-grant-tables #添加這句話,這時候登入mysql就不需要密碼

啓動mysql服務
systemctrl start mysqld.service
免密碼登陸
mysql -u root -p

set password for root@localhost = password(‘123456’);
一般會報錯,然後再來一遍
mysql> flush privileges; #更新權限
set password for root@localhost = password(‘123456’);
成功後退出,將配置文件中免密登陸的地方刪除掉。

修改存儲文件路徑
在/etc/my.cnf文件中修改了datadir

一個SQL在公司可以執行,放到現場執行不了,報錯信息大概如下(網上找的,自己的沒保存):ERROR 1055 (42000): Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘imooc.s.type_name’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
網上查找資料,表示mysql 5.7在某個版本之後默認在sql_mode中增加了only_full_group選項,表示group by的語句在查詢結果必須包含在group by中(這裏需要對sql_mode瞭解下,後面補充@@)。

使用SELECT @@SESSION.sql_mode語句現場結果如下(這裏換行是爲了看起來方便):
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;
的確包含ONLY_FULL_GROUP_BY,同樣查找公司數據庫,沒有改屬性。那麼現在的問題就是刪除這條屬性,命令行執行語句(這裏換行是爲了看起來方便):
set sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,
NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
之後執行SQL的確沒問題,但是新建查詢後查詢又失敗了,網上說這樣的設置只能修改本次session的,新建窗口查詢sql_mode的確沒有刪除ONLY屬性。
嘗試第二個方法,配置文件中修改,找到服務器上的配置文件(/etc/my.cnf),增加語句:
set sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
關閉mysql,開啓mysql報錯(距離工作人員辦公還有不到二十分鐘。。。),查看mysql日誌(配置文件中有地址),發現是配置文件錯誤,修改配置文件,將語句:
set sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
修改爲(多個set):
sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
啓動mysql成功,執行有問題的sql成功(距離工作人員上班還有不到十分鐘);
現場mysql 5.7.22,公司5.7.12

以上是安裝mysql的步驟,以及當時遇到的問題,後面會陸續記錄自己的學習筆記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章