Centos7.2下安裝mysql5.7,使用rpm包安裝


環境:

      CentOS Linux release 7.2.1511 (Core)

      mysql-5.7.18

 

1 安裝前需要先卸載mariadb-lib

[root@slave5 ~]#  rpm -qa|grep mariadb
 mariadb-libs-5.5.44-2.el7.centos.x86_64 
[root@slave5 ~]#  rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps

2 到官網去下載最新的rpm包:mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar

解壓出rpm-bundle.tar,實際上只需要安裝以下幾個包

[root@slave5 ~]#  rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm 
[root@slave5 ~]#  rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
[root@slave5 ~]#  rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm 
[root@slave5 ~]#  rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

上面幾個包有依賴關系,執行有先后。

使用rpm安裝方式安裝mysql,安裝的路徑如下:

a 數據庫目錄
/var/lib/mysql/
b 配置文件
/usr/share/mysql(mysql.server命令及配置文件)
c 相關命令
/usr/bin(mysqladmin mysqldump等命令)
d 啟動腳本
/etc/rc.d/init.d/(啟動腳本文件mysql的目錄)

e 數據庫my.cnf

/etc/my.cnf

 

 

3 數據庫初始化

為了保證數據庫目錄為與文件的所有者為 mysql 登陸用戶,如果你是以 root 身份運行 mysql 服務,需要執行下面的命令初始化

[root@slave5 ~]#  mysqld --initialize --user=mysql

如果是以 mysql 身份運行,則可以去掉 --user 選項

另外 --initialize 選項默認以“安全”模式來初始化,則會為 root 用戶生成一個密碼並將該密碼標記為過期,登陸后你需要設置一個新的密碼,

而使用 --initialize-insecure 命令則不使用安全模式,則不會為 root 用戶生成一個密碼。

這里演示使用的 --initialize 初始化的,會生成一個 root 賬戶密碼,密碼在log文件里,紅色區域的就是自動生成的密碼

[root@slave5 ~]# cat /var/log/mysqld.log 
2017-04-13T10:00:36.294549Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-04-13T10:00:36.848923Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-04-13T10:00:36.961351Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-04-13T10:00:37.153654Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 0ae74223-2030-11e7-abde-08002774d86f.
2017-04-13T10:00:37.185725Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2017-04-13T10:00:37.229524Z 1 [Note] A temporary password is generated for root@localhost: %kWTz,Ml?3Zs

 現在啟動mysql數據庫systemctl start mysqld.service

[root@slave5 ~]# systemctl start mysqld.service

可以使用下面兩個命令對mysql進行停止,啟動和重啟:

啟動:

使用 service 啟動:service mysqld start
使用 mysqld 腳本啟動:/etc/inint.d/mysqld start
使用 safe_mysqld 啟動:safe_mysqld&

停止:

使用 service 啟動:service mysqld stop
使用 mysqld 腳本啟動:/etc/inint.d/mysqld stop
mysqladmin shutdown 

重啟:

使用 service 啟動:service mysqld restart
使用 mysqld 腳本啟動:/etc/inint.d/mysqld restart

 

 

 

4 連接數據庫

[root@slave5 ~]# mysql -u root -p
Enter password:

密碼輸入:%kWTz,Ml?3Zs

修改密碼:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

 由於我的linux centos7裝在了虛擬機上,所以需要使用宿主機遠程訪問mysql,連接Mysql出現1045錯誤。

解決方法:

mysql> use mysql; 
mysql> select host,user from user;

 +-----------+------+ | host         |  user       |

 
         
         
        

 +-----------+------+ | localhost    |  root       |

從執行結果中可以看出,root用戶僅允許本地(localhost)登陸

如果要遠程登陸該Mysql服務器的話,就需要新建一個普通權限的用戶,新建用戶使用如下命令:

mysql> grant select,update,insert,delete on mas.* to yucong@localhost identified by "123456"; 

這句命令的意思是:

新建用戶yucong,並且只允許該用戶在本地(localhost)登錄,密碼是123456,並且賦予它對mas庫中所有表select,update,insert的權限。

我們在這有一個mas庫,所以用mas.*代表mas庫下的所有表。

現在該yucong用戶,已經可以登錄mysql了,但是也還是只能本地登錄。

若要yucong用戶可以遠程登錄mysql,則還需要如下命令:

mysql> update user set host = '%' where user = 'yucong';

現在我們再查看mysql的管理庫:

mysql> select host,user from user;

+-----------+------+ | host         |  user       |

+-----------+------+ | %            |  yucong   | 

+-----------+------+ | localhost |  root        |

這時,在MySQL客戶端工具上新建連接,輸入連接名,遠端的Linux的IP地址,輸入用戶名yucong和密碼123456,選擇連接端口,mysql默認的是3306,還是連接不上。

經過多番查找,發現還需要執行

mysql> flush privileges;

把緩存flush后,終於大功告成了。 因為使用update語句修改用戶記錄,還需要FLUSH語句告訴服務器重載授權表。

當你使用GRANT和REVOKE語句時,表自動重載,而你直接修改授權表時不是。

所以更簡便的方法是

mysql>GRANT SELECT,UPDATE,INSERT,DELETE ON mas.* TO yucong@'%' IDENTIFIED BY '123456';

  

5 數據庫表大小寫不敏感設置

mysql大小寫敏感配置相關的兩個參數,lower_case_file_systemlower_case_table_names

查看當前mysql的大小寫敏感配置:show global variables like '%lower_case%';

+------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | ON | | lower_case_table_names | 0 | +------------------------+-------+

lower_case_file_system

表示當前系統文件是否大小寫敏感,只讀參數,無法修改。

ON  大小寫不敏感
OFF 大小寫敏感
 

lower_case_table_names

表示表名是否大小寫敏感,可以修改。

lower_case_table_names = 0時,mysql會根據表名直接操作,大小寫敏感。
lower_case_table_names = 1時,mysql會先把表名轉為小寫,再執行操作
 

設置lower_case_table_names的值

打開my.cnf文件(vim  /etc/my.cnf),加入以下語句后重啟(service mysqld restart)。

lower_case_table_names = 1

 

 

6 數據庫中文亂碼

用SHOW VARIABLES LIKE 'character%'查看當前字符集:

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | lutf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

character_set_server的默認字符集還是latin1,需要將其修改為utf-8。

解決方式:

在[mysqld]字段里加入character-set-server=utf8

重啟mysql服務:service mysqld restart,再次使用SHOW VARIABLES LIKE 'character%'查看

 

結束語:如果你自己手把手在雲服務器上搭建一個Mysql服務器,這些問題你都會遇到的,甚至更多,嘗試着去搭建一次,才會體會到有哪些問題。 

 如需轉載,請聲明來源:https://www.cnblogs.com/yucongblog/p/6705629.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM