阿里云服務器搭建(一)java環境配置+tomcat配置
阿里云服務器搭建(二)--mysql配置+部署web項目
四、linux下配置mysql
1、安裝mysql
安裝方式有兩種,一種可以使用 yum 來安裝 mysql。一種是到官網下載安裝包后上傳解壓安裝。
這里我使用的是yum來安裝的
首先檢查一下本機上面是否安裝有mysql(我的并沒有安裝過mysql):rm -qa | grep mysql
PS:如果安裝了, 普通刪除模式 rpm -e mysql
查看有沒有安裝mariadb,都沒有,很好,開始安裝mysql,我們需要安裝三個東西如圖2、3、4:
①安裝MySQL官方的Yum Repository
# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
②下載rpm包
# yum -y install mysql57-community-release-el7-10.noarch.rpm
③安裝MySQL服務
# yum -y install mysql-community-server
啟動mysql服務(注意:是mysqld哦),但是我這里報錯了:
# systemctl start mysqld.service
從圖5的信息上看,我們可以輸入命令systemctl status mysqld.service或者?journalctl -xe查看錯誤信息。
圖6為輸入命令 journalctl -xe 看到的信息。從報錯信息可以看出來,是配置目錄里面有東西。
需要進入到配置文件里面,查看數據目錄是什么
#?vi /etc/my.cnf?
再啟動mysql,沒問題了。
使用命令 # service mysqld status 或者 # service mysql status 命令來查看mysql 的啟動狀態
如果是 mysqld is stopped 那就說明mysql服務是停止狀態,
如果是 mysqld is running 那就說明mysql服務是啟動狀態
2、設置 mysql 開機自啟
為什么要設置呢?因為每次關機重啟后,mysql 服務都會被停止,處于 stop 狀態,這時要使用 mysql,就得執行 service mysqld start 命令,比較繁瑣,所以設置一下開機自啟,可以減少麻煩。
#?systemctl enable mysqld
#?systemctl daemon-reload?剛剛配置的服務需要讓systemctl能識別,就必須刷新配置
3、設置mysql密碼
執行以下命令,查找到初始臨時密碼后,登陸mysql:
#grep?'temporary?password'?/var/log/mysqld.log?
注意:mysql5.7默認安裝了密碼安全檢查插件(validate_password),默認密碼檢查策略要求密碼必須包含:大小寫字母、數字和特殊符號,并且長度不能少于8位。否則會提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements錯誤,如下圖12:?
通過msyql環境變量可以查看密碼策略的相關信息:
mysql> show variables like '%password%';
validate_password_policy:密碼策略,默認為MEDIUM策略?
validate_password_dictionary_file:密碼策略文件,策略為STRONG才需要?
validate_password_length:密碼最少長度?
validate_password_mixed_case_count:大小寫字符長度,至少1個?
validate_password_number_count :數字至少1個?
validate_password_special_char_count:特殊字符至少1個?
上述參數是默認策略MEDIUM的密碼檢查規則。
共有以下幾種密碼策略:
修改密碼策略
在/etc/my.cnf文件添加validate_password_policy配置,指定密碼策略
validate_password_policy=0
如果不需要密碼策略,在my.cnf文件中添加如下配置禁用即可:
validate_password = off
重新啟動mysql服務使配置生效:
systemctl restart mysqld
找到臨時密碼后,登陸,然后設置新的密碼:
登陸mysql:mysql -u用戶名(一般為root) -p臨時密碼【比如我的就是:mysql -uroot -pjCjIdBpqB3+A】
注意-p后面緊接著密碼
然后在修改密碼:alter user root@localhost identified by '你要修改成的密碼';
4、刪除
至此設置完成,但還有一點小問題,因為安裝了Yum Repository,以后每次操作yum都會自動更新需要卸載它。
5、配置遠程登錄:
MySQL默認root用戶只能本地登錄,如果要遠程連接,要簡單設置下,這里直接用root來遠程登錄不添加其他角色。
# GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '4008' WITH GRANT OPTION;
庫名:要遠程訪問的數據庫名稱,所有的數據庫使用“*”?
表名:要遠程訪問的數據庫下的表的名稱,所有的表使用“*”?
用戶名:要賦給遠程訪問權限的用戶名稱?
IP地址:可以遠程訪問的電腦的IP地址,所有的地址使用“%”?
密碼:要賦給遠程訪問權限的用戶對應使用的密碼
沖刷權限
# flush privileges;
注意:(這一段我沒有用到,看看就好q^q)
需要注意mysql的配置文件中的bindaddress 的參數和skip-networking 配置
bindaddress : 設定哪些ip地址被配置,使得mysql服務器只回應哪些ip地址的請求),最好注釋掉該參數或設置成為127.0.0.1以外的值
skip-networking : 如果設置了該參數項,將導致所有TCP/IP端口沒有被監聽,也就是說出了本機,其他客戶端都無法用網絡連接到本mysql服務器,所以應該注釋掉該參數
這時使用navicat連接,依然失敗。因為我們需要在服務器端添加3306端口
6、添加3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent;
命令含義:?
--zone #作用域?
--add-port=80/tcp #添加端口,格式為:端口/通訊協議?
--permanent #永久生效,沒有此參數重啟后失效?
結果說沒有運行防火墻,在之前的安裝tomcat的時候,我將防火墻打開了,現在需要關閉防火墻了。并且之前配置tomcat時打開的端口,需要再次設置。
首先,將防火墻打開:
# systemctl status firewalld? 查看防火墻狀態
# systemctl start firewalld? 打開防火墻
然后再輸入那個開放3306端口的命令就行了
再重啟防火墻
firewall-cmd --reload? 重啟防火墻
查看端口監聽狀態:netstat -an|grep 3306
如果顯示不是如上圖所示,則需要修改配置文件。找到my.cnf,一般在/etc/mysql/下面,具體情況根據實際而定。注釋掉其中的bind-address屬性。如下
7、MySQL設置utf8:
打開/etc/my.cnf也就是數據庫的配置文件,然后在底部復制粘貼:
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
查看:
PS:采用navicat新建數據庫時,需要將編碼方式設置為,字符集:utf8 -- UTF-8 Unicode ,排序規則:utf8_general_ci
如果在運行sql語句時,出現以下問題:
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
原因:
MySQL 5.7.5及以上功能依賴檢測功能。如果啟用了ONLY_FULL_GROUP_BY SQL模式(默認情況下),MySQL將拒絕選擇列表,HAVING條件或ORDER BY列表的查詢引用在GROUP BY子句中既未命名的非集合列,也不在功能上依賴于它們。(5.7.5之前,MySQL沒有檢測到功能依賴關系,默認情況下不啟用ONLY_FULL_GROUP_BY。有關5.7.5之前的行為的說明,請參見“MySQL 5.6參考手冊”)。
解決辦法:
打開: /etc/my.cnf
滾動到文件底部復制并粘貼
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
也可以:
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
到文件的底部
保存并退出輸入模式
重啟MySQL:systemctl ?restart mysqld.service
8、開啟阿里云安全組端口策略
登陸阿里云,進入控制臺,網絡和安全->安全組->配置規則(和之前的步驟一樣)將MySQL監聽端口開放即可,如下:
再用navicat連接就可以了
配置文件的說明:
/etc/my.cnf?這是mysql的主配置文件
/var/lib/mysql?mysql數據庫的數據庫文件存放位置
/var/log?mysql數據庫的日志輸出存放位置
五、部署項目
1、導出導入數據
由于是新服務器,上面沒有數據,作為一個web項目,肯定是有數據庫的使用的。所以第一步是將本地數據導入。
在本地的windows系統下,按鍵“win”+r 進入cmd命令,切換到mysql安裝目錄下,我的mysql路徑為:C:\Program Files\MySQL\MySQL Server 5.7\bin
導出數據庫:mysqldump -u [用戶名] -p ?[要導出的數據庫]>[導出的路徑//[文件名].txt]
如我輸入的命令行:mysqldump -u root -p jyb > jyb.txt? ?(輸入后會讓你輸入進入MySQL的密碼)
然后使用xftp將文件上傳至服務器
在xshell中,登陸mysql,創建數據庫:create database jyb;
直接使用source [所在的路徑//*.txt]?將文件進行導入
查看數據庫:show databases;
2、打war包
我用的是idea。
將打好的war包上傳至服務器tomcat的webapps下:
至此,就可以使用啦。