您的位置:首页 > 运维架构 > Linux

Linux开发环境搭建之MySQL安装配置

2018-01-02 00:00 821 查看
摘要: Linux开发环境搭建之MySQL安装配置

本文主要实践在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
datadir=/usr/local/deve/mysql/data
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

命令启动/停止服务,不然就只能使用/bin/mysqld_safe &命令来启动服务

执行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服务,已经可以正常连接



五、总结

经过以上的步骤,mysql就已经正常安装可以使用了,在本文的安装配置中也遇到不少问题,经过询问

别的大佬和查阅资料都完美解决,尤其是最新版的5.7.20在安装配置中和旧版本存在差异,走了很多弯

路,希望本文能帮助到其他同学,如有错误也请留言提出,谢谢。

G

M

T

Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZuluAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu
Text-to-speech function is limited to 200 characters

Options : History : Feedback : DonateClose
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息