Linux下安裝Mysql(yum指令)

今天公司新買了兩臺阿里雲的服務器是CentOS7 64位的,要重新部署環境,我們的環境是:tomact+zookeeper+redis+mysql+dubbo。於是下午3點多開始搞,jdk、tomact、zookeeper、redis都沒碰到什麼問題,這種簡單安裝基本上網上百度一大堆完全能解決需求。
輪到mysql問題來了,首先 百度的是“linux 安裝mysql”出來的一串讓你去官網下載Linux-generic 版本,然後手動安裝解壓安裝,配置一些配置文件的,包括百度百科和百度知道都是這麼說,照着做了之後,啓動msyql服務,報錯:

/usr/local/mysql/mysql-5.6.37-linux-glibc2.12-x86_64/bin/mysqld: Table 'mysql.plugin' doesn't exist
2017-08-30 18:38:02 24241 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2017-08-30 18:38:02 24241 [Note] InnoDB: Using atomics to ref count buffer pool pages
2017-08-30 18:38:02 24241 [Note] InnoDB: The InnoDB memory heap is disabled
2017-08-30 18:38:02 24241 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2017-08-30 18:38:02 24241 [Note] InnoDB: Memory barrier is not used
2017-08-30 18:38:02 24241 [Note] InnoDB: Compressed tables use zlib 1.2.3
2017-08-30 18:38:02 24241 [Note] InnoDB: Using Linux native AIO
2017-08-30 18:38:02 24241 [Note] InnoDB: Using CPU crc32 instructions
2017-08-30 18:38:02 24241 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2017-08-30 18:38:02 24241 [Note] InnoDB: Completed initialization of buffer pool
2017-08-30 18:38:02 24241 [Note] InnoDB: Highest supported file format is Barracuda.
2017-08-30 18:38:02 24241 [Note] InnoDB: Log scan progressed past the checkpoint lsn 49463
2017-08-30 18:38:02 24241 [Note] InnoDB: Database was not shutdown normally!
2017-08-30 18:38:02 24241 [Note] InnoDB: Starting crash recovery.
2017-08-30 18:38:02 24241 [Note] InnoDB: Reading tablespace information from the .ibd files...
2017-08-30 18:38:02 24241 [Note] InnoDB: Restoring possible half-written data pages 
2017-08-30 18:38:02 24241 [Note] InnoDB: from the doublewrite buffer...
InnoDB: Doing recovery: scanned up to log sequence number 1600607
2017-08-30 18:38:02 24241 [Note] InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percent: 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
InnoDB: Apply batch completed
2017-08-30 18:38:03 24241 [Note] InnoDB: 128 rollback segment(s) are active.
2017-08-30 18:38:03 24241 [Note] InnoDB: Waiting for purge to start
2017-08-30 18:38:03 24241 [Note] InnoDB: 5.6.37 started; log sequence number 1600607
2017-08-30 18:38:03 24241 [Note] Server hostname (bind-address): '*'; port: 3306
2017-08-30 18:38:03 24241 [Note] IPv6 is available.
2017-08-30 18:38:03 24241 [Note]   - '::' resolves to '::';
2017-08-30 18:38:03 24241 [Note] Server socket created on IP: '::'.
2017-08-30 18:38:03 24241 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

網上百度錯誤原因,不行。
然後覺得可能是5.7.19可能高了,就下載了5.6,可是啓動還是同樣上面的原因,找了半天沒找到原因,搞的頭疼。算了只能放棄。
於是選擇了yum指令安裝,用的是yum install mysql* ,沒有安裝成功,重新查看了yum源中mysql的版本 yum -y list mysql*,問題來了沒有找到mysql service的源,百度了一下,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

3.安裝mysql

sudo yum install mysql-server

此時會停頓兩次讓你選擇 一直y就行了
4.文件給權限
安裝完成後要求mysql重置密碼,但在之前必須將/var/lib/mysql 訪問權限給了(yum 安裝時默認文件夾)
如果,不給這個時候會報錯:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)
給權限:

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

5.重置密碼
因爲上一步將文件的訪問權限修改了,因此先重啓服務

service mysqld restart

進入mysql:mysql -u root 會進入mysql
mysql > use mysql;
mysql > update user set authentication_string=password('123123') where user='root';
mysql > exit;

此時mysql,已經安裝完成
中間可能會有: ERROR 1017:Can t find file 這類的錯誤,根本原因就是文件讀取權限的問題,只要將權限付給當前用戶就行,當然如果是root,直接給root就好
6.開放默認端口3306
首先用的是:service iptables start/stop
結果報錯:Unit iptables.service failed to load: No such file or directory. 無比蛋疼之下,突然想到了在CentOS 7或RHEL 7或Fedora中防火牆由firewalld來管理
所以改用了firewall-cmd指令。
先查看防火牆是否開啓:systemctl status firewalld 防火牆提示dead狀態,
開啓防火牆:systemctl start firewalld 再次查看發現防火牆提示已經激活,
開啓3306端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent
刷新:firewall-cmd --reload
查看3306端口是否開啓:firewall-cmd --query-port=3306/tcp
給的提示是yes 表示開啓成功。
7.navicat 嘗試遠程連接
遠程連接的時候蛋疼的又出錯了。。
報的錯是:Access 。。。什麼的意思密碼是對的可是連接不對,
這個錯誤原因是你的mysql沒有開啓遠程連接,
指令:mysql -u root進入mysql
賦權:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123321' WITH GRANT OPTION;
刷新:flush privileges
navicat 重新test測試 提示成功!
**如果沒有成功,很可能是你的數據庫裏mysql系統安裝的這個庫下user表數據有問題,可以進去看看,一般完成之後是4條數據,找個好的先把新的刪掉在插入。
mysql安裝成功。。。。
一路的坑,搞了幾個小時才搞完,給我最深的感悟:
1、能簡單搞的千萬別弄複雜,本來用yum指令直接安裝這麼方便,偏偏去搞了手動安裝的。
2、百度上面的資料一定要選最新的,老版本的都不見得能用了,不然太浪費時間,後面出問題自己都不知道怎麼搞。
3、搜索Linux這種開源的系統資料,一定要帶上版本關鍵字,如果我一開始搜索 Linux centOS7 下安裝mysql就可以避免進入第一次那麼複雜的手動安裝。
以上都是今天切身體會踩到的坑,如果錯誤歡迎指正!如果有博友也是碰到這些問題,可以留言互相討論,謝謝!

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