1. 程式人生 > >CentOS 7使用yum安裝MySQL

CentOS 7使用yum安裝MySQL

文章目錄


CentOS7預設資料庫是mariadb,配置等用著不習慣,因此決定改成mysql,但是CentOS7的yum源中預設好像是沒有mysql的。為了解決這個問題,我們要先下載mysql的repo源。

安裝指南

1.下載mysql的repo源

$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2.安裝mysql-community-release-el7-5.noarch.rpm

$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

安裝這個包後,會獲得兩個mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo

3.安裝mysql

$ sudo yum install mysql-server

根據提示安裝就可以了,不過安裝完成後沒有密碼,需要重置密碼

4.重置mysql密碼

$ mysql -u root

5.錯誤分析

登入時有可能報這樣的錯:
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘,
原因是/var/lib/mysql的訪問許可權問題。
下面的命令把/var/lib/mysql的擁有者改為當前使用者:

$ sudo chown -R root:root /var/lib/mysql

6.重啟mysql服務

$ service mysqld restart

7.接下來登入重置密碼

$ mysql -u root  //直接回車進入mysql控制檯
mysql > use mysql;
mysql > update user set password=password('root') where user='root';
mysql > exit;

擴充套件

遠端訪問 開放防火牆的埠號mysql

電梯直達

增加許可權

mysql庫中的user表新增一條記錄host為“%”,user為“root”

參見

Linux MySQL 幾個重要 的目錄
資料庫目錄 /var/lib/mysql/
配置檔案 /usr/share /mysql(mysql.server命令及配置檔案)
相關命令 /usr/bin(mysqladmin mysqldump等命令)
啟動指令碼 /etc/rc.d/init.d/(啟動指令碼檔案mysql的目錄)

刪除mysql資料庫

  • 如果使用的是yum安裝的mysql,需要刪除的話,就是用如下命令:
yum -y remove mysql*
  • 然後將/var/lib/mysql資料夾下的所有檔案都刪除乾淨
rm -rf /var/lib/mysql

然後再重新執行上面的安裝步驟

授權使用者從遠端登入

注意:下面兩個步驟都需要執行.步驟一,只是修改了使用者的密碼.但是並沒有對使用者進行授權;步驟二的作用就是授權,讓使用者可以指定許可權(連線誒資料庫,查詢資料庫…)

1. 改表法。

可能是你的帳號不允許從遠端登陸,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql後,更改 “mysql” 資料庫裡的 “user” 表裡的 “host” 項,從"localhost"改稱"%“可能是你的帳號不允許從遠端登陸,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql後,更改 “mysql” 資料庫裡的 “user” 表裡的 “host” 項,從"localhost"改稱”%"

mysql -u root -p root;
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
2. 授權法。

例如,你想root使用root從任何主機連線到mysql伺服器的話。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

如果你想允許使用者root從ip為192.168.1.3的主機連線到mysql伺服器,並使用root作為密碼

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'root' WITH GRANT OPTION;

注意

1.下面這一句一定要執行,否則還是無法登陸

mysql> flush privileges;

2.如果使用者無法從本地登陸,這個時候就執行如下:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost.localdomain' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql> flush privileges;