本文主要实践在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安装包到我们创建的安装目录
文件上传
三、安装过程
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配置文件
修改配置文件如下:
[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在安装配置中和旧版本存在差异,走了很多弯路,希望本文能帮助到其他同学,如有错误也请留言提出,谢谢。