Linux服務器mysql下載安裝
mysql的安裝主要分為兩種:一種是離線下載壓縮包解壓,另一種是在線命令安裝。主要介紹命令安裝過程:
CentOS下載安裝
在CentOS中默認安裝有MariaDB,這個是MySQL的分支,但為了需要,還是要在系統中安裝MySQL,而且安裝完成之后可以直接覆蓋掉MariaDB。
1 、下載並安裝MySQL官方的 Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
使用上面的命令就直接下載了安裝用的Yum Repository,然后直接yum安裝鏡像。
yum -y install mysql57-community-release-el7-10.noarch.rpm
之后就開始安裝MySQL服務器。
[root@localhost ~]# yum -y install mysql-community-server
等待下載完成,安裝完成后就會覆蓋掉之前的mariadb。
2 、MySQL數據庫設置
首先啟動MySQL
systemctl start mysqld.service
查看MySQL運行狀態,運行狀態如圖:
systemctl status mysqld.service
此時MySQL已經開始正常運行,進入MySQL需要root用戶的密碼,通過如下命令可以在日志文件中找出密碼:
grep "password" /var/log/mysqld.log
進入數據庫:
mysql -uroot -p
輸入初始密碼,因為MySQL默認必須修改密碼之后才能操作數據庫,所以首先修改數據庫密碼:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
可能會出現
通過flush privileges;命令刷新之后再重新設置密碼。
在設置密碼時,新密碼設置的時候如果設置的過於簡單會報錯:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
原因是因為MySQL有密碼設置的規范,具體是與validate_password_policy的值有關:
默認是1,即MEDIUM,所以剛開始設置的密碼必須符合長度,且必須含有數字,小寫或大寫字母,特殊字符。
MySQL完整的初始密碼規則可以通過如下命令查看:
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 4 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
密碼的長度是由validate_password_length決定的,默認為8,而validate_password_length的計算公式是:
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 8 |
+----------------------------+
1 row in set (0.00 sec)
有時候,只是為了自己測試,不想密碼設置得那么復雜,譬如說,我只想設置root的密碼為123456。
必須修改兩個全局參數:
首先,修改validate_password_policy參數的值
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
初始情況下第一個的值是ON,validate_password_length是8。可以通過如下命令修改:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
其中,validate_password_number_count指定了密碼中數據的長度,validate_password_special_char_count指定了密碼中特殊字符的長度,validate_password_mixed_case_count指定了密碼中大小字母的長度。
這些參數,默認值均為1,所以validate_password_length最小值為4,如果你顯性指定validate_password_length的值小於4,盡管不會報錯,但validate_password_length的值將設為4。如下所示:
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 8 |
+----------------------------+
1 row in set (0.00 sec)
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 4 |
+----------------------------+
1 row in set (0.00 sec)
如果修改了validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一個值,則validate_password_length將進行動態修改。
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 4 |
+----------------------------+
1 row in set (0.00 sec)
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
| 1 |
+--------------------------------------+
1 row in set (0.00 sec)
mysql> set global validate_password_mixed_case_count=2;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@validate_password_mixed_case_count;
+--------------------------------------+
| @@validate_password_mixed_case_count |
+--------------------------------------+
| 2 |
+--------------------------------------+
1 row in set (0.00 sec)
mysql> select @@validate_password_length;
+----------------------------+
| @@validate_password_length |
+----------------------------+
| 6 |
+----------------------------+
1 row in set (0.00 sec)
設置之后就是我上面查出來的那幾個值了,此時密碼就可以設置的很簡單,例如1234之類的。到此數據庫的密碼設置就完成了。
但此時還有一個問題,就是因為安裝了Yum Repository,以后每次yum操作都會自動更新,需要把這個卸載掉:
yum -y remove mysql57-community-release-el7-10.noarch
由於雲服務器可能會存在被攻擊的危險,在此,建議數據庫密碼使用默認長度與復雜度。
CentOS卸載
1、查找已經安裝的mysql.
rpm -qa | grep -i mysql
2、卸載
yum -y remove MySQL-*
網上的一般用rpm -e 的命令刪除mysql,這樣表面上刪除了mysql,可是mysql的一些殘余程序仍然存在,並且通過第一步的方式也查找不到殘余,而yum命令比較強大,可以完全刪除mysql.(ps:用rpm刪除后再次安裝的時候會提示已經安裝了,這就是rpm沒刪除干凈的原因)
3、查找mysql的一些目錄,把所有出現的目錄統統刪除.可以使用rm -rf 路徑,刪除時請注意,一旦刪除無法恢復。
find / -name mysql
4、刪除配置文件
rm -rf /etc/my.cnf
rm -rf /root/.mysql_sercret
刪除mysql的默認密碼,如果不刪除,以后安裝mysql這個sercret中的默認密碼不會變,使用其中的默認密碼就可能會報類似Access denied for user 'root@localhost' (using password:yes)的錯誤.
ubuntu下載安裝
ubuntu有一定鏡像源,下載安裝相對簡單。
sudo apt-get update 命令來保持本地的軟件包列表是最新的
sudo apt-get install mysql-server
安裝過程中輸入用戶名密碼:
輸入數據庫的root用戶密碼: root
再次輸入數據庫的root用戶密碼: root
驗證是否成功 mysql -uroot -proot登錄
使用exit;退出當前mysql環境
ubuntu卸載mysql
按順序執行以下命令
sudo apt-get autoremove --purge mysql-server-5.0
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common
清理殘留數據
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
數據庫修改密碼
1. 使用 SET PASSWORD 命令
1、輸入命令mysql -u root -p
指定 root 用戶登錄 MySQL,輸入后按回車鍵輸入密碼。如果沒有配置環境變量,請在 MySQL 的 bin 目錄下登錄操作。
2、使用 SET PASSWORD 修改密碼命令格式為 set password for username @localhost = password(newpwd);
,其中 username 為要修改密碼的用戶名,newpwd 為要修改的新密碼。
2. 使用mysqladmin修改密碼
使用 mysqladmin 命令修改 MySQL 的 root 用戶密碼格式為 mysqladmin -u用戶名 -p舊密碼 password 新密碼
。
3. UPDATE直接編輯user表
1、輸入命令mysql -u root -p
指定 root 用戶登錄 MySQL,輸入后按回車鍵輸入密碼。如果沒有配置環境變量,請在 MySQL 的 bin 目錄下登錄操作。
2、輸入use mysql;
命令連接權限數據庫。
3、輸入命令update mysql.user set authentication_string=password('新密碼') where user='用戶名' and Host ='localhost';
設置新密碼。
4、輸入 flush privileges;
命令刷新權限。
5、輸入quit;
命令退出 MySQL 重新登錄,此時密碼已經修改為剛才輸入的新密碼了。
遠程連接的時候報錯的解決方法
解決1130問題
在服務器登入mysql后,更改 “mysql” 數據庫里的 “user” 表里的 “host” 項,從”localhost”改稱'%'。
下面是用SQL語句解決問題:
mysql -u root -p 然后輸入密碼登錄進入數據庫
use mysql; 更換數據庫,選擇mysql庫
select 'host' from user where user='root'; 查看mysql庫中的user表的host值(即可進行連接訪問的主機/IP名稱)
update user set host = '%' where user ='root'; 修改host值(以通配符%的內容增加主機/IP地址),當然也可以直接增加IP地址
flush privileges; 刷新權限
service mysql restart 重啟mysql服務
解決1698問題修改密碼
update mysql.user set authentication_string=PASSWORD('root'), plugin='mysql_native_password' where user='root';
flush privileges; 刷新操作
重啟mysql服務
service mysql restart
mysql -uroot -proot
use mysql;
update user set Host='%' where User='root';
修改bind_address
vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改43行的bind_address=127.0.0.1為bind_address=0.0.0.0
注意在雲服務器安全組入方向開放3306端口
重啟mysql服務
service mysql restart
解決2005問題
ip地址錯誤
重起mysql服務即可完成。