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; 密码至少要包含的特殊字符数
python3

浙公网安备 33010602011771号