源碼安裝MySQL-5.6.36

安裝之前先檢查當前服務器上是否安裝過MySQL:

rpm -qa|grep mysql

如果有安裝包顯示出來,使用rpm -e 進行卸載。
添加mysql用戶組和用戶,以及mysql的安裝目錄:

[root@localhost src]# groupadd mysql
[root@localhost src]# useradd -g mysql -s /sbin/nologin -M mysql
[root@localhost src]# mkdir /usr/local/mysql
[root@localhost src]# id mysql
uid=501(mysql) gid=501(mysql) groups=501(mysql)

給mysql的安裝目錄授權:

[root@localhost src]# chown -R mysql.mysql /usr/local/mysql
[root@localhost src]# ll /usr/local/
drwxr-xr-x. 2 mysql mysql 4096 May 11 09:09 mysql

源碼安裝:
先下載mysql-5.6.36源碼包,建議先在本地下載好傳到服務器/usr/local/src目錄中:

[root@localhost src]#wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.36.tar.gz
[root@localhost src]#tar -zxf mysql-5.6.36.tar.gz 

安裝依賴:

[root@localhost src]#yum install -y cmake bison bison-devel libaio-devel gcc gcc-c++ git ncurses ncurses-devel autoconf

解壓縮之後進入,mysql5.6起都是通過cmake的方式進行配置的,可以直接採用默認的方式cmake .就能直接進入配置,也可以自己指定配置,下面自己執行配置,修改一些常規的mysql配置。井號#後面是註釋:

[root@localhost src]#cd mysql-5.6.36
[root@localhost mysql-5.6.36]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local//mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

這一步就是二進制安裝了:

[root@localhost mysql-5.6.36]# make && make install

配置數據文件:
mysql安裝完成之後需要安裝文件,在mysql的安裝目錄下的scripts文件夾裏可以看到mysql_install_db,用來安裝mysql數據文件,指定mysql用戶:

[root@localhost mysql]# ls /usr/local/mysql/scripts/
mysql_install_db
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

創建tmp目錄:
MySQL安裝完成後,在安裝目錄需要手動創建tmp文件夾,不然啓動MySQL時會報錯:

[root@localhost mysql]# mkdir tmp

將整個mysql安裝目錄歸屬改爲mysql用戶:

[root@localhost mysql]# chown -R mysql:mysql /usr/local/mysql

啓動mysql:
初次啓動MySQL之前先檢查以下/etc目錄下是否存在my.conf文件,如果有,將其刪除,這個文件不是我們安裝MySQL時產生的,MySQL會優先讀取這個文件,如果不刪除,啓動會報錯。
將mysql安裝目錄下的support-files文件夾中的my-default.cnf配置文件到/etc/my.cnf:

[root@localhost support-files]# rm -rf /etc/my.cnf
[root@localhost support-files]# cp my-default.cnf /etc/my.cnf

將mysql服務啓動文件放在/etc/init.d/下:

[root@localhost support-files]# cp mysql.server /etc/init.d/mysqld

將/usr/local/mysql/bin/目錄添加到環境變量中,vim編輯vim /etc/profile永久添加環境變量

[root@localhost mysql-5.6.36]# export PATH=$PATH:/usr/local/mysql/bin
[root@localhost mysql-5.6.36]# source /etc/profile

啓動MySQL:

[root@localhost mysql]# /usr/local/mysql/support-files/mysql.server start
Starting MySQL.. SUCCESS!

登錄mysql:

[root@localhost mysql]# /usr/local/mysql/bin/mysql -uroot

第一次登陸不需要密碼,需要設置root登錄密碼:

[root@localhost mysql-5.6.36]# mysql> update user set password = password ( '123456' ) where user = 'root' ;

使用Navicat工具連接MySQL:
初次使用Navicat工具連接,會報“1130-host … is not allowed to connect to this MySql server,MySQL”,原因是MySQL中root用戶只允許本地連接數據庫,不允許遠程連接。此時需要修改MYSQL數據庫中的USER表,將root對應的localhost修改爲%

[root@localhost ~]# mysql -uroot -p123456
mysql> use mysql;
Database changed
mysql> update user set host='%' where user='root' and host='localhost';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

再次嘗試連接,輸入連接名,主機,端口等信息,然後測試連接,提示“連接成功”點確定就行了:
在這裏插入圖片描述注:
常見報錯:
1、 ERROR 1044 (42000): Access denied for user ‘’@‘localhost’ to database ‘mysql’
2、 ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

[root@localhost ~]# mysql
MariaDB [(none)]> use mysql
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
MariaDB [(none)]> exit

原來是MySQL數據庫的user表裏,存在用戶名爲空的賬戶即匿名賬戶,導致登錄的時候是雖然用的是root,但實際是匿名登錄的,通過錯誤提示裏的’’@'localhost’可以看出來。因此只需要把user表中的匿名用戶刪除即可解決這個問題:
先編輯/etc/my.cnf,在[mysqld]塊最後面加上skip-grant-tables,這樣重啓服務後登陸MySQL無需密碼,保存退出。
再次連接MySQL,連接成功,在此刪除匿名用戶:

[root@localhost ~]# mysql
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> delete from user where user='';
Query OK, 2 rows affected (0.00 sec)
MariaDB [mysql]> update user set password=password("123456") where user="root";
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0
MariaDB [mysql]> flush privileges;
mysql>flush privileges;

把第一步中my.cnf文件中加上的那一行去掉,再次重啓服務即可。

[root@localhost ~]# vim /etc/my.cnf
[root@localhost ~]# systemctl restart mariadb
[root@localhost ~]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye

3、10060 unknown error解決辦法

在這裏插入圖片描述出現這個報錯基本是由於root用戶的權限privileges導致,需要進行以下操作:

mysql> grant all privileges on *.* to 'root'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit

4、MySQL5.7以上修改root密碼的方法:
Mysql5.7以後的版本,mysql.user表中密碼字段不再是password,而是authentication_string,但authentication_string也不是密碼,而是用戶密碼加密後的字符串,若需要修改root密碼,則需要如下操作:
第一步,在/etc/my.cnf配置文件[mysqld]段內添加skip-grant-tables,然後重啓mysqld服務,並直接使用mysql命令登錄數據庫:

[root@mysql ~]# vim /etc/my.cnf
[root@mysql ~]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
[root@mysql ~]# mysql
mysql>

第二步,將user表root用戶的authentication_string字段置空

mysql>use mysql;
mysql>update user set authentication_string='' where user='root';
mysql>flush privileges;

第三步,把第一步/etc/my.cnf配置文件[mysqld]段內添加的skip-grant-tables註釋掉,然後重啓mysqld服務,使用root用戶登錄,上一步我們把root用戶的authentication_string字段置空了,所以這次不需要密碼就可以直接登錄:

[root@mysql ~]# vim /etc/my.cnf
[root@mysql ~]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
[root@mysql ~]# mysql -uroot -p
Enter password: ###此處直接回車就可以
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

這時可以看到,系統要求我們必須先設置root密碼,所以進行下一步,修改密碼。
第四步,修改密碼:
密碼複雜度要求大寫字母、小寫字母、數字和特殊符號,不然會報錯如下:

mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '123456A,';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements;

正確應該是下面這個:

mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '123456Aa,';
Query OK, 0 rows affected (0.01 sec)

至此,密碼就修改好了!

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