Centos7 安装mysql8
1、将mysql安装包上传
mysql-8.0.21-el7-x86_64.tar
2、解压
tar -xvf mysql-8.0.21-el7-x86_64.tar
解压后有3个文件
[root@cdh03 software]# tar -xvf mysql-8.0.21-el7-x86_64.tar mysql-test-8.0.21-el7-x86_64.tar.gz mysql-8.0.21-el7-x86_64.tar.gz mysql-router-8.0.21-el7-x86_64.tar.gz
3、解压 mysql-8.0.21-el7-x86_64.tar.gz
tar -xzvf mysql-8.0.21-el7-x86_64.tar.gz
4、改名
mv -f mysql-8.0.21-el7-x86_64 mysql80
5、创建MySQL 组
1)创建mysql 组 groupadd mysql 2)创建MySQL用户但该用户不能登陆(-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限) useradd -r -g mysql -s /bin/false mysql 3)把刚创建的mysql用户加入到mysql组下 chown -R mysql:mysql ./
[root@cdh03 software]# groupadd mysql [root@cdh03 software]# useradd -r -g mysql -s /bin/false mysql [root@cdh03 software]# chown -R mysql:mysql ./
6、创建mysql 安装初始化配置文件
vi /etc/my.cnf
添加下面这段命令后保存并退出
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/software/mysql80
# 设置mysql数据库的数据的存放目录
datadir=/software/mysql80/mysqldb
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#设置不区分大小写
lower_case_table_names=1
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
7、安装mysql
进入mysql 安装目录下
cd /software/mysql80/bin
安装MySQL,并记住随机命令 ./mysqld --initialize --console [root@cdh03 bin]# ./mysqld --initialize --console 2020-08-07T15:54:30.382640Z 0 [System] [MY-013169] [Server] /software/mysql80/bin/mysqld (mysqld 8.0.21) initializing of server in progress as process 2160 2020-08-07T15:54:30.387180Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. 2020-08-07T15:54:30.438042Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2020-08-07T15:54:31.596423Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2020-08-07T15:54:34.300843Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: E3S9al(EFkuy
8、启动MySQL服务
[root@cdh03 mysql80]# cd support-files/ [root@cdh03 support-files]# pwd /software/mysql80/support-files [root@cdh03 support-files]# ./mysql.server start Starting MySQL.Logging to '/software/mysql80/mysqldb/cdh03.err'. . ERROR! The server quit without updating PID file (/software/mysql80/mysqldb/cdh03.pid). 在mysql安装目录下重新授权后,再次自行启动MySQL命令 [root@cdh03 support-files]# ./mysql.server start Starting MySQL.Logging to '/software/mysql80/mysqldb/cdh03.err'. .. SUCCESS! [root@cdh03 support-files]#
9、mysql加入系统进程中
[root@cdh03 support-files]# cp mysql.server /etc/init.d/mysqld 重启MySQL服务 [root@cdh03 support-files]# service mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL.. SUCCESS! [root@cdh03 support-files]#
10、修改随机登陆密码
[root@cdh03 support-files]# cd .. [root@cdh03 mysql80]# cd bin [root@cdh03 bin]# ./mysql -u root -p Enter password: 输入刚刚的密码 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.21 Copyright (c) 2000, 2020, 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>
11、修改密码为root
alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
12、设置允许远程登陆
mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> update user set user.Host='%'where user.User='root'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
退出
quit
重启
[root@cdh03 bin]# service mysqld restart Shutting down MySQL.. SUCCESS! Starting MySQL.. SUCCESS! [root@cdh03 bin]#
#查看mysql是否区分大小写 mysql> show variables like "%case%" ; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names | 1 | +------------------------+-------+ 2 rows in set (0.01 sec)
win下默认值是1,mac是2,linux是0。 0:区分大小写 1:不区分 2:部分区分
注:
#创建表 CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; #创建用户并赋权 GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm'; 报错: ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 查看权限规则 SHOW VARIABLES LIKE 'validate_password%'; #查看权限是否正确 SHOW GRANTS FOR 'myscm'@'%'; +------------------------------------------------+ | Grants for myscm@% | +------------------------------------------------+ | GRANT USAGE ON *.* TO 'myscm'@'%' | | GRANT ALL PRIVILEGES ON `scm`.* TO 'myscm'@'%' | +------------------------------------------------+ 关于 mysql 密码策略相关参数; 1)、validate_password_length 固定密码的总长度; 2)、validate_password_dictionary_file 指定密码验证的文件路径; 3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数; 4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数; 5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM; 关于 validate_password_policy 的取值: 0/LOW:只验证长度; 1/MEDIUM:验证长度、数字、大小写、特殊字符; 2/STRONG:验证长度、数字、大小写、特殊字符、字典文件; 6)、validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;
set global validate_password_policy=LOW;
set global validate_password_length=1;
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'myscm'@'%' IDENTIFIED BY 'myscm';
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'metastore'@'%' IDENTIFIED BY 'metastore';
完