MySQL安装和配置(CentOS)


下面是在Alibaba Cloud Linux 3系统下安装MySQL的详细步骤,Alibaba Cloud Linux 3是基于CentOS 7(EL7)的发行版,因此安装步骤与CentOS7一样的。

官方文档:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/

一、MySQL安装步骤

运行以下命令,更新并添加MySQL官方的YUM源

rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-11.noarch.rpm

运行以下命令,安装MySQL

yum install -y mysql-community-server

注意默认是8.0版本的(可以通过 yum repolist all | grep mysql 查看),如果需要安装5.7版本的通过如下命令切换:

yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community

修改MySQL的启动端口

修改MySQL的启动端口,MySQL的默认端口是3306,要修改启动端口需要修改配置文件,默认配置文件在 /etc/my.cnf 中,可以通过如下命令来修改:

vim /etc/my.cnf

在里面添加如下内容:

[mysqld]
port = 3307

之后需要重启MySQL服务,才能生效

systemctl restart mysql

二、启动MySQL服务

运行以下命令,启动MySQL服务

systemctl start mysqld

查看MySQL服务状态

systemctl status mysqld

设置MySQL开机启动

systemctl enable mysqld

三、配置MySQL

启动成功后,如果是第一次安装那么可以通过如下命令来获取初始密码(必须登陆进去修改密码)

MySQL在第一次启动成功后会进行数据库初始化,并会自动生成一个随机密码,并输出到日志中。

运行以下命令,查看MySQL的初始密码

grep 'temporary password' /var/log/mysqld.log

MySQL的验证密码插件是默认安装的。其要求密码至少包含一个大写字母、一个字母、一个数字和一个特殊字符,密码总长度至少为8个字符。

修改初始密码

可以直接使用如下命令来登陆MySQL,然后修改密码

# 登陆
mysql -uroot -p

# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '设置你自己的密码';

也可以通过MySQL密码修改插件来修改,执行如下命令进行root密码的修改

mysql_secure_installation

根据提示信息输入相关内容即可

Enter password for user root: #输入已获取的root用户初始密码

The existing password for the user account root has expired. Please set a new password.

New password: #输入新的MySQL密码

Re-enter new password: #重复输入新的MySQL密码
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #输入Y选择更新MySQL密码。您也可以输入N不再更新MySQL密码。

New password: #输入新的MySQL密码

Re-enter new password: #重复输入新的MySQL密码

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :Y #输入Y确认使用已设置的密码。

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) :Y #输入Y删除MySQL默认的匿名用户。
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) :Y #输入Y禁止root远程登录,其他则允许远程登陆
Success.


By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) :Y #输入Y删除test库以及对test库的访问权限。
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.


Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) :Y #输入Y重新加载授权表。
Success.

All done!

修改密码

如果你安装过MySQL压缩包版的,一定知道MySQL的配置是在一个叫my.cnf文件中;

vim /etc/my.cnf

然后在里面加入如下配置(跳过密码验证,修改密码后记得将其移除然后重启MySQL)

skip-grant-tables

注意:如果修改了my.cnf文件,需要重启MySQL服务才能生效。

修改密码(方式一);这种方式相当于将其回到初始安装状态,这样我们重新登陆的时候就会要求输入密码了

# 将密码设置为空
update user set authentication_string='' where user='root';

# 重新设置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '设置你自己的密码';

修改密码(方式二);这种方式需要修改密码验证规则

use mysql;
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;

修改密码规则

对应开发环境来说,只需要简单密码即可;因此需要修改相关密码配置;查看mysql 密码策略相关参数;

SHOW VARIABLES LIKE 'validate_password%';

关于 mysql 密码策略相关参数:

  • validate_password_length 固定密码的总长度;
  • validate_password_dictionary_file 指定密码验证的文件路径;
  • validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
  • validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
  • validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;关于 validate_password_policy 的取值:
    • 0/LOW:只验证长度;
    • 1/MEDIUM:验证长度、数字、大小写、特殊字符;
    • 2/STRONG:验证长度、数字、大小写、特殊字符、字典文件;
  • validate_password_special_char_count 整个密码中至少要包含特殊字符的个数;

下面是修改密码策略的示例,其意思是:密码至少6位,且不区分大小写,不包含数字,不包含特殊字符,不包含字母都行。

set GLOBAL validate_password.length=6;
set GLOBAL validate_password.mixed_case_count=0; 
set GLOBAL validate_password.number_count=0;
set GLOBAL validate_password.policy=LOW;
set GLOBAL validate_password.special_char_count=0;

配置MySQL远程访问

默认情况下,MySQL只允许本地访问,因此需要配置MySQL远程访问。

use mysql;
update user set host="%" where user="root";

查看当前用户信息

use mysql;
select host, user, authentication_string, plugin from user;

创建MySQL账号

针对于安全考虑,我们通常对数据库的读写权限进行限制,因此需要创建一个MySQL账号。 要创建一个只能进行数据库读写操作的MySQL账号,可以按照以下步骤执行:

  • 首先,登录到MySQL服务器上的root账号或具有管理员权限的账号。
  • 执行以下命令以创建一个新的MySQL用户,并授予该用户对特定数据库的读写权限:
    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
    GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'username'@'localhost';
    FLUSH PRIVILEGES;

在上面的命令中:

  • ‘username’ 是您要创建的新用户的名称。
  • ‘password’ 是该用户的密码。
  • ‘database_name’ 是您要授予权限的数据库名称。您可以将其替换为您要授予权限的实际数据库名称。通常情况下,将其替换为*表示适用于所有数据库。
  • SELECT, INSERT, UPDATE, DELETE 是您希望为该用户授予的操作权限。您可以根据需要添加或删除其他权限,如CREATE, DROP, ALTER等。
  • 最后,通过执行FLUSH PRIVILEGES;来刷新MySQL的权限缓存,使新的权限设置生效。

特别提醒:扫码关注微信订阅号'起岸星辰',实时掌握IT业界技术资讯! 转载请保留原文中的链接!
  目录