mysql5.7-01-安装及设置密码

数据库产品趋势:https://db-engines.com/en/ranking

以下操作适用于centos7版本,如果安装在centos8上启动时会报错;解决方法如下:

mysql命令登录不成功,报错:mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory。
一个方法:yum install libncurses*,完美解决问题。

  

1、环境设置

#更改时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#同步时间
ntpdate time.windows.com

#关闭selinux
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
setenforce 0
#检查是否关闭
[root@db1 tmp]# getenforce 
Disabled

/opt 目录挂载到数据盘上,和系统盘分开;后期mysql程序和数据都放置在该盘中。

2、下载

http://downloads.mysql.com/archives/community/    选择:5.7.20  Linux - Generic   All   64-bit   

 

3、安装(二进制安装)

1、准备操作

#卸载原有的mariadb
yum remove mariadb-libs mariadb-server

#安装依赖包
yum install -y libaio-devel
#创建用户
useradd mysql -s /sbin/nologin -u 1800
#创建目录
mkdir -p /opt/{app,data} 
chown -R mysql.mysql /opt/{app,data} 

2、上传并解压

#将mysql包上传至app目录下
#解压mysql包
[root@db1 app]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
#重命名
[root@db1 app]# mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql

3、修改环境变量

# cat >> /etc/profile << EOF
export PATH=/opt/app/mysql/bin:$PATH
EOF

source /etc/profile

 4、初始化数据库

my.cnf中写入最基本的内容

[root@db1 ~]# cat /etc/my.cnf 
[mysqld]
user=mysql
basedir=/opt/app/mysql
datadir=/opt/data/mydb
server_id=6
port=3306
socket=/tmp/mysql.sock
default_storage_engine=INNODB
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
#skip-name-resolve

innodb_data_file_path=ibdata1:1G:autoextend
explicit_defaults_for_timestamp=true

[mysql]
socket=/tmp/mysql.sock
#prompt=3306 [\\d]>
prompt="3306: \\d \\r:\\m:\\s>"

  开始初始化

这样初始化后导致没有密码强度校验,如果后想加入请拉到本文最后
初始化数据,初始化管理员的密码为空:(这样会导致密码规则没有限制)
\rm -rf /opt/data/mydb/* mysqld
--initialize-insecure --user=mysql --basedir=/opt/app/mysql --datadir=/opt/data/mydb

注释:5.6初始化的区别

/opt/app/mysql/scripts/mysql_install_db --basedir=/opt/app/mysql --datadir=/opt/data/mydb

如果需要生成随机密码,直接执行下列命令即可: 

mysqld --initialize --console

执行完毕后,在/opt/data/mydb/mysql_error.log中查看到密码。

A temporary password is generated for root@localhost: ku9AwwBc2:CJ

 

5、配置启动脚本

cat >> /etc/systemd/system/mysqld.service <<EOF 
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/opt/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF

注释:主要修改ExecStart 这行,填对路径即可,其他均无需改动。

systemctl  start/stop/restart/status   mysqld

检查mysql是否启动

[root@localhost data]# ps -ef|grep mysqld
mysql      9896      1  3 16:43 ?        00:00:00 /opt/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
root       9925   9655  0 16:43 pts/1    00:00:00 grep --color=auto mysqld

6、设置、修改密码

#方式一:直接回车即可
[root@db1 ~]# mysqladmin -uroot -p password 123
修改密码需要在回车后需要填写旧密码

#方式二:set语句修改密码
set password for 'root'@localhost=password('新密码')

7、用户基本信息查询

5.6版本:
select user,password,host from mysql.user;

5.7 中用户基本信息
select user,host from mysql.user;

8、设置mysql密码强度

如果在初始的时候设置的是空密码,就没有安装密码强度校验,可以后期启动,方法如下:

参考博文:https://blog.csdn.net/zhangxueleishamo/article/details/103348187

#查看插件放置目录(可以忽略,不用操作,知道即可)
mysql>  show variables like 'plugin_dir';
+---------------+--------------------------------------+
| Variable_name | Value                                |
+---------------+--------------------------------------+
| plugin_dir    | /data/server/mysql/lib/mysql/plugin/ |
+---------------+--------------------------------------+


#在my.cnf内写入这两句后重启mysql
[mysqld]
plugin-load-add=validate_password.so
#服务器在启动时加载插件,并防止在服务器运行时删除插件。 validate-password=FORCE_PLUS_PERMANENT #如果不想重启mysql,可以执行 INSTALL PLUGIN validate_password SONAME 'validate_password.so'; #查看是否生效 mysql> show variables like 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | 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 | +--------------------------------------+--------+ 6 rows in set (0.00 sec)

 如果要关闭这个插件

对应参数的value值也为默认值,以下是这些值的解释
 validate_password_length 8 # 密码的最小长度,此处为8。
 validate_password_mixed_case_count 1 # 至少要包含小写或大写字母的个数,此处为1。
 validate_password_number_count 1 # 至少要包含的数字的个数,此处为1。
 validate_password_policy MEDIUM # 强度等级,其中其值可设置为0、1、2。分别对应:
                           【0/LOW】:只检查长度。
                           【1/MEDIUM】:在0等级的基础上多检查数字、大小写、特殊字符。
                           【2/STRONG】:在1等级的基础上多检查特殊字符字典文件,此处为1。
 validate_password_special_char_count 1 # 至少要包含的个数字符的个数,此处为1。

想要关闭这个插件,则在配置文件中加入以下并重启mysqld即可:
[mysqld]
validate_password=off

或者
UNINSTALL PLUGIN validate_password;
即可

 修改mysql密码强度

因为初始化的时候设置的空密码,后期启动的密码校验;导致在线修改的参数重启mysql后失效

set global validate_password_length=4;    密码的最小长度为4或以上
set global validate_password_mixed_case_count=0;  密码至少要包含的小写字母个数和大写字母个数。
set global validate_password_number_count=0;    密码至少要包含的数字个数
set global validate_password_special_char_count=0;   密码至少要包含的特殊字符数

  

 

 

 

 

 

 
posted @ 2020-09-04 22:58  无敌仙人掌  阅读(303)  评论(0)    收藏  举报
AmazingCounters.com