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