CentOS下yum安裝MySQL

gary-liu發表於2016-03-20

檢測是否有安裝

yum list installed | grep mysqlrpm -qa | grep mysql

rpm -ql xxx 可以找到通過yum 安裝軟體的路徑

解除安裝
yum -y remove xxx

安裝

yum -y install mysql-server mysql mysql-devel
檢視版本資訊
rpm -qi mysql-server
啟動MySQL
service mysqld start/restart
檢視mysql服務是否開機自動啟動
chkconfig --list | grep mysql
設定開機啟動
chkconfig mysql on
為root賬號設定密碼
mysqladmin -u root password '123456'
登陸MySQL
mysql -u root -p

/etc/my.cnfmysql的主配置檔案
/var/lib/mysql mysql資料庫的資料庫檔案存放位置
/var/log/mysqld.log mysql資料庫的日誌輸出存放位置 

常見問題

Host “XXX” is not allowed to connect to this MySQL server

現象:我遇到的問題是在localhost上可以登入MySQL,但是在客戶機上連線不上,因為帳號不允許從遠端登陸導致的。

解決辦法:在服務端用localhost登入,更改 “mysql” 資料庫裡的 “user” 表裡的 “host” 項,從”localhost”改稱”%”。登入後執行下列命令,就可以看到user表中賬號和host了。

use mysql
update user set host = '%' where user = 'root';
select host, user from user;

執行上面操作後可能會出現ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'提示,是因為表中重複資料導致的,這個沒關係,然後重啟下MySQL服務,客戶端就可以連上了。

Packet for query is too large

寫資料到資料庫時,文字內容太大導致的,解決辦法:/etc/my.cnf MySQL的配置檔案中增加如下配置,然後重啟下MySQL,max_allowed_packet預設值是1M

[mysqld]
max_allowed_packet = 4M

GROUP BY incompatible with sql_mode=only_full_group_by

這個是MySQL版本不同預設設定不同導致的,解決辦法:
修改MySQL的配置檔案/etc/my.cnf,增加如下配置,重啟MySQL。

[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

或者在執行命令修改sql_mode

mysql> set global 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> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

[參考]
CentOS6.4下Mysql資料庫的安裝與配置
mysql 遠端訪問不行解決方法 Host is not allowed to connect to this MySQL server
Packet for query is too large(mysql寫入資料過大)
Getting this SQL Error: GROUP BY incompatible with sql_mode=only_full_group_by
an error in MySql related to only_full_group_by when executing a query

相關文章