CentoOS7 上安装MySQL 5.7

来源:互联网 发布:生辰八字高分起名软件 编辑:程序博客网 时间:2024/06/04 18:37

1、进入目录 /usr/local/,创建一个新的目录mysql用于存放安装包

2、查看系统中是否已安装 MySQL 服务:

rpm -qa | grep mysql

yum list installed | grep mysql

7如果已安装则删除 MySQL 及其依赖的包:
yum -y remove mysql-libs.x86_64

3、进入目录 /usr/local/mysql,下载 mysql57-community-release-el7-8.noarch.rpm 的 YUM 源:

wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

4、安装 mysql57-community-release-el7-8.noarch.rpm:

rpm -ivh mysql57-community-release-el7-8.noarch.rpm

安装完后,得到如下两个包:
mysql-community.repo
mysql-community-source.repo

5、安装 MySQL:

yum install mysql-server

遇到疑问的地方,一路 Y 下去即可;
安装完毕后,在 /var/log/mysqld.log 文件中会自动生成一个随机的密码,我们需要先取得这个随机密码,以用于登录 MySQL 服务端:

grep "password" /var/log/mysqld.log

打印如下内容:
A temporary password is generated forroot@localhost: hilX0U!9i3_6
我们复制root@localhost: 后面的随机字符串,这个字符串就是 MySQL 在安装完成后为我们随机生成的密码

6、 登录到 MySQL 服务端并更新用户 root 的密码:

mysql -u root -philX0U!9i3_6

打印出 MySQL 的版本即表明已登录;
如果出现-bash: 未预期的符号 '(' 附近有语法错误 的错误,可能是密码中有些特殊字符导致的,解决方法是在-p后什么也不写直接回车,命令行会提示你输入密码,这个时候输入密码就能正确登录了

用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:

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

如果只是修改为一个简单的密码,会报以下错误:

mysql>  ALTER USER USER() IDENTIFIED BY '12345678';ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个其实与validate_password_policy的值有关。
validate_password_policy有以下取值:

Policy Tests Performed
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 file

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
必须修改两个全局参数:
首先,修改validate_password_policy参数的值

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

这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。

mysql> select @@validate_password_length;+----------------------------+| @@validate_password_length |+----------------------------+|                          8 |+----------------------------+1 row in set (0.00 sec)

validate_password_length参数默认为8,它有最小值的限制,最小值为:

validate_password_number_count+ validate_password_special_char_count+ (2 * validate_password_mixed_case_count)

其中,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)

当然,前提是validate_password插件必须已经安装,MySQL5.7是默认安装的。

那么如何验证validate_password插件是否安装呢?可通过查看以下参数,如果没有安装,则输出将为空。

mysql> SHOW VARIABLES LIKE 'validate_password%';+--------------------------------------+-------+| Variable_name                        | Value |+--------------------------------------+-------+| validate_password_dictionary_file    |       || validate_password_length             | 6     || validate_password_mixed_case_count   | 2     || validate_password_number_count       | 1     || validate_password_policy             | LOW   || validate_password_special_char_count | 1     |+--------------------------------------+-------+rows in set (0.00 sec)

7、访问权限设置

设置用户 root 可以在任意 IP 下被访问:

grant all privileges on *.* to root@"%" identified by "12345678";

设置用户 root 可以在本地被访问:

grant all privileges on *.* to root@"localhost" identified by "12345678";

更新 MySQL 的用户 root的密码:

set password = password('12345678');

刷新权限使之生效:

flush privileges;

添加远程访问权限:
root为远程访问的用户,‘12345678’为密码

grant all on *.* to root@"%" identified by '12345678' with grant option;

然后重启mysql服务,flush privileges不管用

all表示所有权限,也可以只赋予某一项,例如select,update等,不同权限用逗号隔开
. 表示所有数据库的所有表
%表示任意远程计算机

打开 /etc 目录下的 my.cnf 文件(此文件是 MySQL 的主配置文件):
bind-address = 127.0.0.1
改成
bind-address = 0.0.0.0
如果没有的话就加上去

设置防火墙,打开3306端口,允许远程访问3306端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

然后重启防火墙

9、设置 MySQL 的字符集为 UTF-8:
打开 /etc 目录下的 my.cnf 文件(此文件是 MySQL 的主配置文件):
/etc/my.cnf
在 [mysqld] 后添加如下代码:

character_set_server=utf8collation-server=utf8_general_ciskip-character-set-client-handshake

再次查看字符集:

mysql> show variables like '%character%';+--------------------------+----------------------------+| 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/ |+--------------------------+----------------------------+
0 0
原创粉丝点击