linux(centos7.4)安装mysql5.7

10 篇文章 1 订阅
10 篇文章 0 订阅

安装方式:

yum方式安装

安装步骤:

一、安装MySQL YUM资源库

 yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

二、安装MySQL 5.7

yum install -y mysql-community-server

三、启动MySQL和开启MySQL的自动启动

systemctl start mysqld.service
systemctl enable mysqld.service

四、密码
由于MySQL从5.7开始不允许首次安装后使用空密码进行登录!为了加强安全性,系统会随机生成一个密码以供管理员首次登录使用,
这个密码记录在/var/log/mysqld.log文件中,使用下面的命令可以查看此密码:

cat /var/log/mysqld.log|grep 'A temporary password'
2020-01-24T09:36:20.210903Z 1 [Note] A temporary password is generated for root@localhost: DOaIworrw5/<

最后一行冒号后面的部分DOaIworrw5/<就是初始密码。

使用此密码登录MySQL:

[root@localhost opt]# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

使用随机生产的密码登录后,须马上修改密码,否则会报如下错误:

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

五、修改密码

mysql> set password=password("123456");

或者

mysql> alter user 'root'@'localhost' identified by '123456';

修改完后需要刷新权限

mysql> flush privileges;

如果上面在执行set password=password(“123456”);命令后出现下面的报错:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

解决办法:
这个与Mysql 密码安全策略validate_password_policy的值有关,validate_password_policy可以取0、1、2三个值:
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary

默认的数值是1,符合长度,且必须含有数字,小写或大写字母,特殊字符。
所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
必须修改两个全局参数:

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

修改上面两个参数后,就可以解决这个报错了。

修改复杂密码

注意一点:
mysql5.7之后的数据库里mysql.user表里已经没有password这个字段了,password字段改成了authentication_string。
所以修改复杂密码的命令如下:

mysql> update mysql.user set authentication_string=password('sadevqq@1234') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

刷新权限

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>

该方式也可用于修改简单密码
如:
登陆mysql后执行下面语句

update mysql.user set authentication_string=password('123456') where user='root';
flush privileges;

六、修改mysql5.7的编码由latin1改为utf8

查看默认编码:

mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.01 sec)

调整操作:

[root@kevin ~]# cat /etc/my.cnf
......
[mysqld]
......
//注意这个不能写成default-character-set=utf8,否则会导致5.7版本mysql无法打开
character-set-server=utf8 

[client]
default-character-set=utf8

//重启mysql
[root@kevin~]# systemctl restart mysqld.service
[root@kevin~]# mysql -p
......

//再次查看
mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

mysql>

七、开放远程登录

navicat连接报错:Host 'XXX' is not allowed to connect to this MySQL server

如何开启MySQL的远程登陆
1、首先以 root 帐户登陆 MySQL

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

mysql> grant all PRIVILEGES on test_db.* to root@'192.168.1.101'  identified by '123456';

上面的语句表示将 test_db 数据库的所有权限授权给 root 这个用户,允许 root 用户在 192.168.1.101 这个 IP 进行远程登陆,并设置 root 用户的密码为 123456 。

下面逐一分析所有的参数:

all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

test_db.* 表示上面的权限是针对于哪个表的,test_db指的是数据库,后面的 * 表示对于所有的表,
由此可以推理出:对于全部数据库的全部表授权为“.”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。

root 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

192.168.1.101 表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。

123456 为用户的密码。

执行了上面的语句后,再执行下面的语句,方可立即生效。

   flush privileges; 

最终我们可以知道,如果要完全开放远程登录则只需要这样执行命令即可

//对全部数据库的全部表授权、不限制链接的 IP、修改密码为123456
grant all PRIVILEGES on *.* to root@'%'  identified by '123456';
flush privileges; 

如果该文章有帮助到您,就留言点个赞吧!您的支持与肯定是我持续更新最大的动力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值