centos7中的MySQL安装

centos7中的MySQL安装

一、MySQL5.7.17安装脚本

#! /bin/bash
cd /root
mkdir mysql_tar
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-server-5.7.17-1.el7.x86_64.rpm
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-client-5.7.17-1.el7.x86_64.rpm
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-common-5.7.17-1.el7.x86_64.rpm
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-libs-5.7.17-1.el7.x86_64.rpm

# 删除centos7系统自带的数据库
rpm -qa | grep mariadb | xargs rpm -e  --nodeps

# 删除已有的MySQL
rpm -qa | grep mysql | xargs rpm -e --nodeps


rpm -ivh mysql-community-common-5.7.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.17-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.17-1.el7.x86_64.rpm

# 安装后查询安装的MySQL版本
mysqladmin --version

# 启动数据库
systemctl start mysqld

echo '安装完毕!!!' 

注意

  • 先检查自己的电脑上有没有这两个依赖;如果没有,在下载后再执行脚本!!
yum install libaio -y
yum install net-tools -y

二、登录安装的MySQL5.7

  • 由于MySQL5.7.4之前的版本中默认是没有密码的,登录后直接回车就可以进入数据库,从而在里 面进行设置密码等操作。其后版本对密码等安全相关操作进行了一些改变,在安装过程中,会在安 装日志中生成一个临时密码。

  • 获取数据库临时密码:grep ‘temporary password’ /var/log/mysqld.log

  • 更改密码:初始化密码只是提供给你登录到内部,而我们进入到内部必须修改密码,否则无法对数据库操作。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword';

三、修改密码策略

# 查看密码策略
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |  是否验证用户名
| validate_password_dictionary_file    |        |  密码策略文件,策略为STRONG才需要
| 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      |  特殊字符至少一个
+--------------------------------------+--------+ 
# 修改密码策略
mysql> set global validate_password_policy=0;  # 关闭策略
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=4;  # 密码长度最短为4位
Query OK, 0 rows affected (0.00 sec)

mysql> set global  validate_password_mixed_case_count=0;  # 大小写字母数可以为0
Query OK, 0 rows affected (0.00 sec)

mysql> set global  validate_password_special_char_count=0; #  特殊字符数可以为0
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_number_count=0;  # 数字位数可以为0
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 4     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 0     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+


四、创建用户并授权

1、基本创建用户

  • 创建本地用户:仅允许本机连接到MySQL服务器

    CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';
    
  • 创建远程用户:指定允许从特定IP地址连接到MySQL服务器

    CREATE USER '用户名'@'119.28.68.52' IDENTIFIED BY '密码';
    
  • 创建用户并指定允许访问的IP地址范围

    CREATE USER '用户名'@'192.168.1.%' IDENTIFIED BY '密码';
    
  • 创建允许任何主机连接的用户:

    CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
    

2、用户账户权限设置

  • ALL PRIVILEGES: 授予用户帐户的所有权限
  • CREATE: 允许用户帐户创建数据库和表
  • DROP: 允许用户帐户删除数据库和表
  • DELETE: 允许用户帐户从特定表中删除行
  • INSERT: 允许用户帐户将行插入特定表
  • SELECT: 允许用户帐户读取数据库
  • UPDATE: 允许用户帐户更新表行

3、授权给用户

  • 特定数据库上的用户帐户授予所有权限:
    GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
    
  • 所有数据库上的用户帐户授予所有权限:
    GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
    
  • 通过数据库中的特定表格对用户帐户的所有权限:
    GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
    
  • 通过特定数据库为用户帐户授予多个权限:
    GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
    

4、显示用户权限

  • 使用 SHOW GRANTS 语句显示特定用户帐户的权限:

    SHOW GRANTS FOR '用户名'@'localhost';
    
  • 使用 SHOW GRANTS 语句显示所有用户帐户的权限:

    SHOW GRANTS
    

5、撤销用户权限

  • 撤销用户在特定数据库上的所有权限:

    REVOKE ALL PRIVILEGES ON database_name.* FROM 'database_user'@'localhost';
    
  • 撤销用户在所有数据库上的所有权限:

    REVOKE ALL PRIVILEGES ON *.* FROM 'database_user'@'localhost';
    

6、删除用户

  • 删除用户:

    DROP USER '用户名'@'localhost';
    

五、my.cnf配置文件

1. 文件结构和语法

  • my.cnf 文件使用 INI 文件格式,采用键值对(key=value)的方式来表示配置选项。
  • 文件中的配置选项通常被分组到不同的节(section)中,每个节以方括号 [] 标识,例如 [mysqld] 表示 MySQL 服务器的配置选项。

2. 常见节和配置选项

以下是常见的节和配置选项,可以在 my.cnf 文件中进行设置:

(1)[mysqld]
  • MySQL 服务器的全局配置选项,影响整个 MySQL 服务器的行为。

常见的配置选项包括:

  • datadir:指定 MySQL 数据文件的存储路径。
  • port:指定 MySQL 服务器监听的端口号。
  • socket:指定 MySQL 服务器的套接字文件路径。
  • character-set-server:指定服务器的默认字符集。
  • collation-server:指定服务器的默认校对规则。
(2)[mysql]
  • MySQL 客户端的配置选项,影响连接到 MySQL 服务器的客户端行为。

常见的配置选项包括:

  • default-character-set:指定客户端的默认字符集。
(3)[client]
  • MySQL 客户端的配置选项,影响连接到 MySQL 服务器的客户端行为,类似于 [mysql] 节。
(4)[mysqldump]
  • MySQL 数据库备份工具 mysqldump 的配置选项,影响使用 mysqldump 工具备份数据库时的行为。
(5)[mysqladmin]
  • MySQL 管理工具 mysqladmin 的配置选项,影响使用 mysqladmin 工具管理 MySQL 服务器时的行为。

3. 添加注释

  • my.cnf 文件中,可以使用 # 符号添加注释,注释可以解释配置选项的含义和用法。

六、忘记mysql密码解决方法

只限于MySQL5.7

1、先更改my.cnf的配置文件,并重启mysql

  • 在my.cnf文件中的[mysqld] 下加入下面一行,其余不做改变。
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables
[root@localhost ~]# systemctl restart mysqld

2、登录MySQL,此时不需要输入密码,直接回车即可

mysql -uroot -p

3、切换到mysql数据库,查询user表的结构,这里有需要的字段。

  • 在MySQL5.7版本中mysql数据库下已经没有password这个字段了,password字段改成了 authentication_string字段。

centos7中的MySQL安装_第1张图片

4、修改mysql的root密码并退出mysql

mysql> update user
-> set authentication_string=password('ABCabc123!')
-> where user='root' and host='localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 1
mysql> \q

5、再次修改my.cnf配置文件,将第一步添加的语句注释或删除,然后重启 mysql。

[root@localhost ~]# vim /etc/my.cnf
[mysqld]
#skip-grant-tables
[root@localhost ~]# systemctl restart mysqld

6、用新密码登录mysql

ffected, 1 warning (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 1
mysql> \q


### 5、再次修改my.cnf配置文件,将第一步添加的语句注释或删除,然后重启 mysql。

~~~shell
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
#skip-grant-tables
[root@localhost ~]# systemctl restart mysqld

6、用新密码登录mysql

你可能感兴趣的:(mysql,数据库)