本文主要实践在Linux上安装和配置MySQL关系型数据库,完整的实践MySQL的下载、安装、配置、使用的过程,为后面某些文中使用做基础

一、环境准备

1.CentOS7发行版的Linux系统(最小化安装)

2.MySQL官方编译的安装包 mysql-5.7.20-linux-glibc2.12-x86_64
下载地址:https://dev.mysql.com/downloads/mysql/

二、安装准备

1.打开CentOS7发行版Linux系统

2.添加mysql组和mysql用户
执行命令groupadd mysql 添加mysql组
执行命令useradd -r -g mysql mysql 添加mysql用户
参数说明:
useradd -r表示mysql用户是系统用户,不可用于登录系统
useradd -g表示把mysql用户添加到mysql用户组中

查看新添加的组和用户 :groups mysql

3.使用FTP上传mysql安装包到我们创建的安装目录

上传mysql安装包到linux系统

三、安装过程

1.解压安装包到安装目录

2.更改目录名为mysql

3.修改目录权限
进入mysql目录,修改目录拥有者为mysql用户:执行命令 chown -R mysql:mysql ./

4.安装mysql数据库
进入mysql目录下的bin目录中,执行./mysql_install_db –user=mysql,此时系统反馈错误

错误提示:需要指定data目录,因为mysql服务进程mysqld运行时都会访问data目录,所以必须由启动mysqld进程的用户,就是我们之前设置的mysql用户,执行这个脚本或者用root 执行,但是加上参数–user=mysql上文还有警告信息,说mysql_install_db 命令已经是弃用的,建议切换到mysqld –initialize命令
注意:mysql5.7和之前版本不同,很多资料上都是这个命令:./scripts/mysql_install_db –user=mysql,而mysql5.7的mysql_install_db命令是在bin目录下的并且建议 用 mysqld –initialize命令初始化
我们本文的版本是5.7.20,我们需要进入bin目录下执行初始化命令:./mysqld –initialize –user=mysql –basedir=/usr/local/deve/mysql –datadir=/usr/local/deve/mysql/data

参数解释:
–user 启动mysql的用户
–basedir mysql安装目录
–datadir mysql数据目录

[Note] A temporary password is generated for root@localhost: ae3Zk1<1b=iu
注意:最后一行系统给出了root的默认密码,过会我们会修改

5.修改目录权限
将mysql目录下除了data目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者

6.修改配置文件
刚刚执行初始化命令,已经在系统的etc目录下生成了my.cnf配置文件

修改配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
[client]  
socket=/usr/local/deve/mysql/tmp/mysql.sock

[mysqld]
basedir=/usr/local/deve/mysql
socket=/usr/local/deve/imysql/tmp/mysql.sock
symbolic-links=0

[mysqld_safe]
log-error=/usr/local/deve/mysql/logs/mysql.log
pid-file=/usr/local/deve/mysql/logs/mysql.pid                     

!includedir /etc/my.cnf.d


注意:tmp目录不存在就创建,否则会出错, 创建后要赋予mysql权限,chown -R mysql:mysql tmp 如果mysql.sock指定到/tmp以外的目录,需要在my.cnf中添加[client]并且指定socket位置,否则登录mysql时会报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2),默认是会找tmp目录下的sock文件

7.将mysqld服务加入开机自启动项
修改mysql.server中basedir的相关路径,改为自定义的路径

将support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务,执行cp mysql.server /etc/init.d/mysql 然后执行chmod +x /etc/init.d/mysql 把mysql注册为开机启动的服务chkconfig –add mysql 验证chkconfig –list mysql

8.mysql服务的开启和关闭
<1>mysql服务启动有以下三种方式
#/etc/init.d/mysql start
serivce mysql start
bin/mysqld_safe&

<2>mysql服务停止有以下三种方式
#/etc/init.d/mysql stop
service mysql stop
bin/mysqladmin -uroot -p (注意此时的root是指mysql的root用户)
注:脚本末尾加&表示设置此进程为后台进程,区别就是在控制台输入bg,即可将当前进程转入后台

9.配置环境变量
vi /etc/profile
写入mysql的环境变量信息

退出保存后,执行source /etc/profile 使其生效,使用echo $PATH查看配置

注意:不添加环境变量或者建立软链接,运行mysql命令会出现 -bash: mysql:command not found

四、验证安装

1.启动mysql服务

2.连接mysql
mysql -uroot -p ae3Zk1<1b=iu (生成的密码)

3.修改默认密码
修改mysql的密码有很多中方法
<1>.使用客户端连接
直接执行 SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpass’);
localhost是mysql的主机ip,newpass是需要设置的新密码

<2>用SET PASSWORD命令
使用 mysql -uroot -p 连接成功后
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpass’);

<3>用mysqladmin
mysqladmin -u root password “newpass”
如果root已经设置过密码,或者初始化生成了默认密码,采用如下方法
mysqladmin -u root password oldpass “newpass”

<4> 用UPDATE直接编辑user表
使用 mysql -uroot -p 连接成功后
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD(‘newpass’) WHERE user = ‘root’;
mysql> FLUSH PRIVILEGES;

<5>忘记root密码的时候
mysqld_safe –skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD(“new password”) WHERE user=’root’;
mysql> FLUSH PRIVILEGES;
本文直接在命令行中修改,采用上面第<2>中方式

4.远程连接mysql
我们使用另一台主机的navicat进行远程连接

我们发现mysql服务不允许远程连接访问,我们需要授权远程访问,有以下两种方式:

<1>通过改表实现(简单)
使用 mysql -uroot -p 连接成功后
mysql>use mysql;
mysql>update user set host = ‘%’ where user = ‘root’;
mysql>select host, user from user;
本文使用这种方式

<2>通过授权
首先在安装mysql的机器上运行:mysql -h localhost -u root ,然后在命令行执行
mysql>GRANT ALL PRIVILEGES ON . TO ‘root’@’%’WITH GRANT OPTION
如果你想允许用户test从ip为192.168.1.100的主机连接到mysql服务器,并使用123456作为密码
GRANT ALL PRIVILEGES ON . TO ‘test’@’192.168.1.100’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
然后mysql>FLUSH PRIVILEGES 使修改生效
最后mysql>EXIT退出即可
例如授权任何ip使用root 以123456登陆:
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
修改完成后,使用service mysql restart 重启服务,我们再次远程连接MYSQL服务,已经可以正常连接

注意:跳过密码验证,执行命令行:# /usr/bin/mysqld_safe –skip-grant-tables

五、文末总结

经过以上的步骤,mysql就已经正常安装可以使用了,在本文的安装配置中也遇到不少问题,经过询问别的大佬和查阅资料都完美解决,尤其是最新版的5.7.20在安装配置中和旧版本存在差异,走了很多弯路,希望本文能帮助到其他同学,如有错误也请留言提出,谢谢。