CentOS 7 版本已將MySQL數據庫軟件從默認的程序列表中移除,改用mariadb代替。先要從官網下載MySQL Yum repository安裝包,以後用yum安裝:
官網的MySQL Yum repository最新地址:https://dev.mysql.com/downloads/repo/yum/
用wget下載MySQL Yum repository安裝包,安裝完成後,用yum安裝MySQL以下:html
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
yum install mysql-community-server
在最小化安裝的狀況下,若是須要yum離線安裝,所需依賴以下:
mysql
=================================================================================================================================================================================================================================================
Package Arch Version Repository Size
=================================================================================================================================================================================================================================================
Installing:
mysql-community-libs x86_64 8.0.13-1.el7 mysql80-community 2.3 M
replacing mariadb-libs.x86_64 1:5.5.56-2.el7
mysql-community-libs-compat x86_64 8.0.13-1.el7 mysql80-community 2.1 M
replacing mariadb-libs.x86_64 1:5.5.56-2.el7
mysql-community-server x86_64 8.0.13-1.el7 mysql80-community 381 M
Installing for dependencies:
mysql-community-client x86_64 8.0.13-1.el7 mysql80-community 26 M
mysql-community-common x86_64 8.0.13-1.el7 mysql80-community 554 k
perl x86_64 4:5.16.3-293.el7 base 8.0 M
perl-Carp noarch 1.26-244.el7 base 19 k
perl-Encode x86_64 2.51-7.el7 base 1.5 M
perl-Exporter noarch 5.68-3.el7 base 28 k
perl-File-Path noarch 2.09-2.el7 base 26 k
perl-File-Temp noarch 0.23.01-3.el7 base 56 k
perl-Filter x86_64 1.49-3.el7 base 76 k
perl-Getopt-Long noarch 2.40-3.el7 base 56 k
perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k
perl-PathTools x86_64 3.40-5.el7 base 82 k
perl-Pod-Escapes noarch 1:1.04-293.el7 base 51 k
perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k
perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k
perl-Pod-Usage noarch 1.63-3.el7 base 27 k
perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k
perl-Socket x86_64 2.010-4.el7 base 49 k
perl-Storable x86_64 2.45-3.el7 base 77 k
perl-Text-ParseWords noarch 3.29-4.el7 base 14 k
perl-Time-HiRes x86_64 4:1.9725-3.el7 base 45 k
perl-Time-Local noarch 1.2300-2.el7 base 24 k
perl-constant noarch 1.27-2.el7 base 19 k
perl-libs x86_64 4:5.16.3-293.el7 base 688 k
perl-macros x86_64 4:5.16.3-293.el7 base 44 k
perl-parent noarch 1:0.225-244.el7 base 12 k
perl-podlators noarch 2.5.1-3.el7 base 112 k
perl-threads x86_64 1.87-4.el7 base 49 k
perl-threads-shared x86_64 1.43-6.el7 base 39 k
Updating for dependencies:
postfix x86_64 2:2.10.1-7.el7 base 2.4 M
Transaction Summary
=================================================================================================================================================================================================================================================
Install 3 Packages (+29 Dependent packages)
Upgrade ( 1 Dependent package)
Total download size: 426 M
啓動MySQL服務
systemctl start mysqld.service
運行一下命令查看一下運行狀態
systemctl status mysqld.service
設置開機啓動:sql
systemctl enable mysqld
systemctl daemon-reload數據庫
一、查詢mysql的初始密碼:vim
初始密碼密碼是隨機產生的,每臺機器產生的都不同的:安全
grep 'temporary password' /var/log/mysqld.log dom
或者ide
cat /var/log/mysqld.log | grep 'temporary password'post
[root@localhost ~]#grep 'temporary password' /var/log/mysqld.log
2019-01-08T07:44:08.711112Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: d2t511xRrg;>
將以上密碼複製在登陸時用到;測試
二、登陸mysql的命令
mysql -uroot -p[回車],而後將複製的臨時密碼粘貼,回車。
若是手打輸入密碼,此處是不可見,而且不能刪除,輸入錯誤了請回車後從新輸入,即便退格鍵也會被當作是字符密碼來驗證。
三、修改mysql密碼
第一次登陸須要重置密碼,不然其餘操做都會報如下錯誤:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
重置密碼的命令以下(在skip-grant-tables 中不可用;惟一在8.0中生效的改密碼方法,後面幾個方法測試都是報錯,可能在mysql5.7沒問題;):
ALTER USER 'root'@'localhost' IDENTIFIED BY '****************';
mysql默認安裝了密碼安全檢查插件(validate_password),默認密碼檢查策略要求密碼必須包含:大小寫字母、數字和特殊符號,而且長度不能少於8位。
不然會提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements錯誤。
mysql> show variables like 'vali%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 1 | +--------------------------------------+--------+ 7 rows in set (0.03 sec)
validate_password_length 8 # 密碼的最小長度,此處爲8。
validate_password_mixed_case_count 1 # 至少要包含小寫或大寫字母的個數,此處爲1。
validate_password_number_count 1 # 至少要包含的數字的個數,此處爲1。
validate_password_policy MEDIUM # 強度等級,其中其值可設置爲0、一、2。分別對應:
【0/LOW】:只檢查長度。
【1/MEDIUM】:在0等級的基礎上多檢查數字、大小寫、特殊字符。
【2/STRONG】:在1等級的基礎上多檢查特殊字符字典文件,此處爲1。
validate_password_special_char_count 1 # 至少要包含的個數字符的個數,此處爲1。
四、數據庫受權
數據庫沒有受權前,只支持localhost本地訪問,受權以下:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '******' WITH GRANT OPTION;
//遠程鏈接數據庫的時候須要輸入用戶名和密碼
用戶名:root
密碼:******
指定ip地址:%表明全部ip,此處也能夠按實際需求輸入肯定的ip地址來指定ip
輸入後使修改生效還須要下面的語句:
mysql>FLUSH PRIVILEGES;
flush privileges 命令本質上的做用是將當前user和privilige表中的用戶信息/權限設置從mysql庫(MySQL數據庫的內置庫)中提取到內存裏。MySQL用戶數據和權限有修改後,但願在"不重啓MySQL服務"的狀況下直接生效,那麼就須要執行這個命令。一般是在修改ROOT賬號的設置後,怕重啓後沒法再登陸進來,那麼直接flush以後就能夠看權限設置是否生效。而沒必要冒太大風險。
也能夠經過修改表來實現遠程:
mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
mysql> select host, user from user;
也能夠用直接再添加新用戶的方法解決:
CREATE USER ‘root‘@‘%‘ IDENTIFIED BY ‘******‘;
grant all on *.* to 'root001'@'%' identified by 'Root@@' with grant option;
增長root用戶指定能夠任意IP登陸,若是想限制只能讓指定IP登陸請把%替換成IP地址。
五、忘記mysql的登陸密碼了
首先找到mysql的配置文件my.cnf 通常在 /etc/my.cnf :
vim /etc/my.cnf
在最後一行添加上:skip-grant-tables
保存退出,重啓mysqld 使之生效,用mysql -uroot直接進入數據庫:
mysql>use mysql;
mysql> UPDATE mysql.user SET Password = password ( 'xinmima' ) WHERE User = 'root' ;//單引號內的字符即便須要設置的新密碼
或
mysql> update mysql.user set authentication_string=password('新密碼') where user='root';
mysql> flush privileges ;
mysql>quit
改完密碼後,將配置文件改回來,刪除 /etc/my.cnf 文件裏面的「skip-grant-tables」。
重啓數據庫服務mysqld,而後就可使用 mysql -uroot -p輸入你的新密碼進入了。
在第一次重啓後,mysql數據庫處於徹底沒有密碼保護的狀態,其餘任何用戶都不須要密碼直接能夠登陸mysql數據庫。須要保證沒有其餘用戶在登陸或者鏈接。
本次使用的是CentOS7.5版本和mysql8.0.13的版本。正確語法以下:
update user set authentication_string='' where user='root';
mysql> flush privileges ;
mysql>quit
一、使用空的初始密碼登陸mysql帳號:
mysql-uroot -p
二、修改root密碼:
SETPASSWORD = PASSWORD('123456');
一、使用空的初始密碼登陸mysql帳號:
mysql-uroot -p
二、修改root密碼:
mysqladmin -u root password '123456'
一、使用空的初始密碼登陸mysql帳號:
mysql-uroot -p
二、修改root密碼:
mysql> update user set Password=password("123456") where User='root';
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.04 sec)
mysql> select Host,User,password from user where user='root';
+-----------------------+------+-------------------------------------------+
| Host | User | password |
+-----------------------+------+-------------------------------------------+
| localhost | root | *5626ED34B75C6C508BA2A3D0A4F6E4C58823138C |
| localhost.localdomain | root | *5626ED34B75C6C508BA2A3D0A4F6E4C58823138C |
| 127.0.0.1 | root | *5626ED34B75C6C508BA2A3D0A4F6E4C58823138C |
| ::1 | root | *5626ED34B75C6C508BA2A3D0A4F6E4C58823138C |
+-----------------------+------+-------------------------------------------+
4 rows in set (0.00 sec)
mysql 5.7的數據庫沒有了password字段,用的是authentication_string字段:
mysql> update mysql.user set authentication_string=password('root') where user='root' ;
mysql> flush privileges;
mysql 8.0.13的數據庫用的也是authentication_string字段:
mysql> update mysql.user set authentication_string='******' where user='root' ;
mysql> flush privileges;
參考:https://www.cnblogs.com/jimmyTang-J/p/9698211.htmlhttps://blog.csdn.net/xuheng8600/article/details/80034647https://blog.csdn.net/z13615480737/article/details/78907697