centos7源碼安裝5.7mysqlnode
源碼安裝mysql在生產環境上是很經常使用的,可是源碼安裝出的問題比較多,接下來咱們來看看咱們如何安裝使用源碼mysql。mysql
注:在安裝源碼時,爲了不沒必要要的麻煩。咱們須要關掉selinux。linux
一、mysql編譯安裝c++
[root@node1 src]#wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz [root@node1 src]#yum install -y cmake gcc-c++ gcc ncurses-devel perl-Data-Dumper boost boost-doc boost-devel
##安裝環境依賴包sql
[root@node1 src]# tar -xf mysql-boost-5.7.20.tar.gz [root@node1 src]# cd mysql-5.7.20/ [root@node1 mysql-5.7.20]#useradd mysql -s /sbin/nologin [root@node1 mysql-5.7.20]#mkdir -pv /usr/local/mysql/mydata [root@node1 mysql-5.7.20]#mkdir -pv /usr/local/mysql/conf [root@node1 mysql-5.7.20]#chown -R mysql:mysql /usr/local/mysql
注意小事項:數據庫
若是之前裝過mariadbd的須要刪除my.cnf文件centos
[root@node1 mysql-5.7.20]#rm -rf /etc/my.cnf
必須刪除my.cnf,其爲mariadb配置文件,於mysql有衝突安全
[root@node1 mysql-5.7.20]#cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/mydata \ -DSYSCONFDIR=/usr/local/mysql/conf \ -DMYSQL_USER=mysql \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_DEBUG=0 \ -DMYSQL_MAINTAINER_MODE=0 \ -DWITH_SSL:STRING=bundled \ -DWITH_ZLIB:STRING=bundled \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=./boost #$由於5.7版本因此須要編譯boost [root@node1 mysql-5.7.20]#make && make install
2.新建配置my.cnf配置文件,不新建會起不來bash
接下來咱們看看mysql的啓動路徑順序:服務器
My.cnf啓動順序:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf
其餘自定義路徑下的my.cnf,例如:/data/mysql/yejr_3306/my.cnf
無論是mysqld服務器端程序,仍是mysql客戶端程序,均可以採用下面兩個參數來自行指定要讀取的配置文件路徑:
咱們新建咱們的配置文件
[root@node1 mysql-5.7.20]# cat /etc/my.cnf [mysqld] datadir=/usr/local/mysql/mydata ##這個目錄要有mysql用戶權限 socket=/tmp/mysql.sock ###讓它生成在tmp目錄下,其餘目錄也能夠,但要給予權限,在tmp目錄下咱們就不須要,等下建個軟鏈接就好。
3.設置添加到系統服務並設置開機啓動
[root@node1 mysql-5.7.20]#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld [root@node1 mysql-5.7.20]#chmod +x /etc/init.d/mysqld [root@node1 mysql-5.7.20]#chkconfig --add mysqld [root@node1 mysql-5.7.20]#chkconfig mysqld on
四、將mysql添加到bash
[root@node1 mysql-5.7.20]#cp /usr/local/mysql/bin/mysql /usr/bin/mysql
5.咱們初始化mysql
[root@node1 mysql-5.7.20]#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/mydata
六、啓動咱們的mysql
[root@node1 mysql-5.7.20]# service mysqld start Starting MySQL.Logging to '/usr/local/mysql/mydata/node2.err'. Starting MySQL. SUCCESS! [root@node1 mysql-5.7.20]# ln -s /tmp/mysql.sock /usr/local/mysql/mysql.sock ###新建軟鏈接,啓動mysql以便咱們能找到mysql.sock [root@node1 mysql-5.7.20]# service mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL. SUCCESS! [root@node1 mysql-5.7.20]# cat /etc/my.cnf [mysqld] datadir=/usr/local/mysql/mydata socket=/usr/local/mysql/mysql.sock ###再修改咱們的mysql.sock路徑
咱們發現能夠啓動成功
七、進入咱們的數據庫。
[root@node1 mysql-5.7.20]#mysql Linux mysql 5.6: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
##發現會出錯,但咱們並非咱們的mysql密碼,且咱們也進不入安全模式。怎麼辦呢?
八、解決密碼問題,進入數據庫。
咱們進入咱們的配置文件添加skip-grant-tables,
[root@node1 mysql-5.7.20]# cat /etc/my.cnf [mysqld] datadir=/usr/local/mysql/mydata socket=/tmp/mysql.sock skip-grant-tables [root@node1 mydata]# service mysqld restart Shutting down MySQL. SUCCESS! Starting MySQL. SUCCESS!
九、測試,修改密碼。
[root@node1 mysql-5.7.20]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.20 Source distribution Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
##能夠發現能夠進入mysql了
mysql>update mysql.user set authentication_string=password('root') where user='root' ;
修改密碼,須要把skip-grant-tables刪掉,而後重啓服務,以root密碼登錄,而後設置咱們的密碼:
mysql>set password =password('123456');
這樣之後就能夠愉快的玩耍了。
總結:咱們發現咱們在源碼安裝時遇到的問題很是多,像配置文件要咱們新建,mysql.sock 目錄也有咱們自動生成,建立的目錄要給權限,密碼修改等問題,須要咱們注意,因此咱們把以上的方面作好,咱們就能夠成功的完成源碼安裝。