公司最新的項目用到了mysql 8,安裝和部署在阿里雲上,系統是centos7。最近這兩年我的思路從網上搜索別人的文章,轉變爲以官網爲主,查官網資料解決問題,以百度爲最後一步,因爲像mysql這麼龐大的產品,和系統的關聯很緊密,而且文檔非常的複雜,所以前人踩過的坑值得借鑑。
contos7默認安裝了mariadb數據庫,這裏把他移除:卸載yum remove mariadb-libs.x86_64
官網安裝步驟:
依賴libaio,先安裝 libaio
shell> yum search libaio
shell> yum install libaio
shell> groupadd mysql --設置mysql用戶組
shell> useradd -r -g mysql -s /bin/false mysql --加入mysql用戶
shell> cd /usr/local
shell> tar xvf /path/to/mysql-VERSION-OS.tar.xz --解壓mysql到本路徑
shell> ln -s full-path-to-mysql-VERSION-OS mysql --軟連接
shell> cd mysql
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files --權限,操作日誌等
shell> bin/mysqld --initialize --user=mysql --初始化數據庫,注意初始密碼要記錄下來
下面這兩步是mysql的ssl認證方式,在我們使用中不需要這種方式,所以就不執行
shell> bin/mysql_ssl_rsa_setup
shell> bin/mysqld_safe --user=mysql &
註冊server服務,使用服務命令啓動
shell> cp support-files/mysql.server /etc/init.d/mysql.server
service mysqld start
官網中默認方式沒有使用配置文件,我在/etc文件下看到my.cnf.rpmsave文件,複製爲my.cnf 文件,裏面可以修改data路徑,log路徑等。
創建用戶
create user 'username'@'localhost' identified by 'password';
授權所有權限
grant all privileges on database_name.* to 'username'@'localhost';
刷新權限
flush privileges;
操作中遇到的問題:
- [root@iZbp198h7llwft78a5652vZ mysql]# bin/mysqld –-initialize -–user=mysql -–basedir=/usr/local/mysql –-datadir=/data/mysql
mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)
2019-12-12T11:35:44.584067Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2019-12-12T11:35:44.584193Z 0 [System] [MY-010116] [Server] /usr/local/src/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.18) starting as process 26921
2019-12-12T11:35:44.587294Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-12-12T11:35:44.587500Z 0 [System] [MY-010910] [Server] /usr/local/src/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld: Shutdown complete (mysqld 8.0.18) MySQL Community Server - GPL.
- /etc/my.cnf 下的log文件地址
inux下安裝mysql連接的時候經常回提示說找不到mysql.sock文件,解決辦法很簡單:
如果是新安裝的mysql,提示找不到文件,就搜索下,指定正確的位置
- [root@iZbp198h7llwft78a5652vZ support-files]# service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/iZbp198h7llwft78a5652vZ.pid).
這個問題折磨了很久,pid文件找不到,修改不了這個文件。新建一個pid文件,一運行命令就會刪除此文件。最後發現是log文件夾的權限問題,設置爲mysql組,750操作權限後就可以了。
- linux環境下報錯bash: mysql: command not found 的解決方法
# mysql -u root
-bash: mysql: command not found
原因:這是由於系統默認會查找/usr/bin下的命令,如果這個命令不在這個目錄下,當然會找不到命令,我們需要做的就是映射一個鏈接到/usr/bin目錄下,相當於建立一個鏈接文件。
首先得知道mysql命令或mysqladmin命令的完整路徑,比如mysql的路徑是:/usr/local/mysql/bin/mysql,我們則可以這樣執行命令:
# ln -s /usr/local/mysql/bin/mysql /usr/bin
- 剛剛安裝完成MYSQL,登錄進去以後,什麼操作都提示錯誤,ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
這是說明我們的初始密碼時間過期了,重新改一下密碼就行
alter user user() identified by "你的新密碼";
總結:
根據官網的步驟來可以梳理清晰思路,每一步搞清楚是什麼意思,遇到問題多查資料,多測試。