Linux上安装MySQL

MySQL 是 非常流行的 关系型 数据库系统, 不管你做软件开发还是测试,都非常有必要了解一下它。

MySQL 最新版本是2018年4月发布的8.0,比较新,还没有大规模的使用。

所以我们建议大家目前还是先使用5.6 和 5.7版本。 这两个版本广泛使用,是非常可靠的。

MySQL 可以安装在很多操作系统上, Windows,Linux,Unix等等。

因为企业里基本都是在Linux上面使用它的,所以我们这里介绍如何安装MySQL在Linux上。


大家知道,Linux 有很多发行版, 常用的有 CentOS,Redhat,Ubuntu,Debian 等,我们这里介绍如何安装MySQL5.7 在CentOS7上。

首先,确保以 root 账号登录CentOS系统。

注意,我们后面的操作都是以root用户进行的。

在CentOS7上 如果执行 yum命令 安装 mysql 实际上安装的是MariaDB。所以我们需要下载rpm包安装。

配置 yum 仓库源

CentOS 的软件通过 yum 安装是最方便的,我们需要先配置 yum 源,这样yum工具才能从正确的 Mysql yum 仓库 下载安装MySQL。


首先,根据你的CentOS的版本 和 mysql版本下载对应 yum 仓库源安装包。

注意,如果你的CentOS上面还没有wget,执行命令 yum install wget 先安装wget

怎么检查 CentOS版本? 执行下面的命令即可

# cat /etc/CentOS-release
CentOS Linux release 7.5.1804 (Core)

上面的例子就显示了 CentOS版本是 7.5。

既然CentOS大版本号是7,执行如下命令下载对应的yum 仓库源安装包

wget http://repo.mysql.com/mysql57-community-release-el7.rpm

如果你安装在 CentOS6 上,就执行如下命令

wget http://repo.mysql.com/mysql57-community-release-el6.rpm


接下来,我们执行下面的命令,安装下载好的rpm

rpm -ivh mysql57-community-release-el7.rpm

显示结果如下

Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql57-community-release-el7-9  ################################# [100%]

这样就配置好 mysql 的yum源了。

安装MySQL服务

既然MySQL 的 yum源已经配置好了,安装MySQL服务非常简单,执行下面命令即可

yum install mysql-server

随后,在如下界面需要你确认下载安装,

这时,你需要输入y并回车, 继续安装即可。

最后显示如下界面,表示安装成功。

启动MySQL服务

执行下面的命令,启动MySQL服务

systemctl start mysqld

如果是CentOS6,使用命令 service mysqld start

执行下面的命令查看是否启动成功

systemctl status mysqld

如果是CentOS6,使用命令 service mysqld status

如果显示结果如下

表示启动成功了。


安装好mysql5.7后,系统会自动产生一个mysql中的root用户,和初始密码。注意这不是Linux中的root用户。

要获取mysql root用户的初始密码,执行下面的命令

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

你会看到类似下面的输出内容

记录下这个初始密码 ItYVhRpCc4-L (你产生的密码肯定和我的不一样) , 下面我们更新密码时,需要使用这个初始密码。

修改密码

执行下面的命令修改密码

mysql_secure_installation

显示如下

Securing the MySQL server deployment.

Enter password for user root:

这时,需要输入当前的密码,输入刚才得到的初始密码,并回车

系统显示如下内容

Change the password for root ? ((Press y|Y for Yes, any other key for No) :

输入y并回车,显示如下信息,要求你输入新密码

New password:

这时,输入一个安全性比较高的新密码,比如 Byhy123$,回车,这时系统显示如下信息要求你重新输入刚才的密码进行确认,

Re-enter new password:

再次输入刚才的密码即可。



这时系统显示如下信息

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) :

MySQL安装后有个缺省的匿名用户 anonymous, 方便测试用的, 通常会带来安全隐患,这时,我们可以选择删除该用户。

输入y并回车,即可删除anonymous用户。



这时系统显示如下信息

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) :

这是询问你是否禁止 mysql的root用户远程登录系统,如果是生产环境,通常应该禁止,输入y并回车,即可禁止。



这时系统显示如下信息

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) :

这是询问你是否删除 test 数据库。

MySQL安装好会缺省创建一个名为test的数据库,方便测试。如你不需要,可以删除,输入y并回车,即可删除。



这时系统显示如下信息

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并回车,让我们的配置立即生效了。

最后显示如下信息,即表示所有前面的设置成功。

All done!

添加数据库用户

通常,我们创建自己指定的mysql用户,来访问我们自己的数据库。

如何创建mysql数据库用户呢?

执行 命令 mysql -uroot -p ,要求进入mysql命令行客户端。

界面显示如下,要求我们提供root用户密码

Enter password:

输入刚才你设置的root用户密码即可。

这是,系统显示

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

我们就可以输入sql语句命令了。



输入如下两条命令添加MySQL用户,注意命令末尾有分号。

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'Mima123!';
CREATE USER 'user1'@'%' IDENTIFIED BY 'Mima123!';

注意,这是创建用户 user1,密码为 Mima123!。 根据你的需求使用不同的用户名密码。

为什么要有两条命令创建同一个用户?

@符号后面的 ‘localhost’ 表示该用户可以从localhost或者127.0.0.1地址连接访问数据库,也就是从本机访问数据库

@符号后面的 ‘%’ 表示该用户可以从其它IP地址连接访问数据库。



随后输入如下命令,赋予user1用户所有权限 访问任何数据库的任何表的

GRANT ALL ON *.* TO 'user1'@'localhost';
GRANT ALL ON *.* TO 'user1'@'%';

如果你只想赋予 user1用户,只能读取数据库mydb的表table1 的权限,就可以这样写

GRANT SELECT  ON mydb.table1 TO 'user1'@'localhost';
GRANT SELECT  ON mydb.table1 TO 'user1'@'%';

关于用户权限赋予,更多说明参考官方文档


最后,输入 quit 并回车,退出mysql命令行客户端。

打开防火墙3306端口

我们的程序有时候是通过网络远程访问 MySQL数据库服务的。

这时,需要让防火墙打开3306端口,以便外部程序可以通过网络访问。

如果你是CentOS7的系统,执行如下命令打开 mysql服务3306端口

firewall-cmd --zone=public --add-service=mysql --permanent

你是CentOS6的系统,执行如下命令

iptables -I INPUT -p TCP --dport 3306 -j ACCEPT;/sbin/service iptables save


微信扫码分享本文