参考网址
https://blog.csdn.net/qq_37598011/article/details/93489404
简要介绍
linux系统安装MySQL软件(也可以理解在linux系统上安装了一个服务,有了这种服务,我们可以存储数据)主要有两种方法:
<1>一种是通过src源码自行编译安装,这种适合高级用户定制MySQL的特性,这里不做说明;
<2>另一种是通过已经编译过的二进制文件进行安装。
二进制文件安装的方法又分为两种:
<1>一种是不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件;
<2>第二种是使用RPM或其他包进行安装,这种安装进程会自动完成系统的相关配置,所以比较方便。
linux安装mysql,一般来说都是以root用户身份安装,然后把登陆mysql的权限授予其他有需要的普通用户。 这样更方便管理,也更加安全。 本文全程是用root用户身份安装的。
下载软件包
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
也可以通过scp命令,从别人服务器上搞过来。
scp命令:
scp user_name@ip:/xxx/xxx/xxx . # 需要输入对方用户的密码
上传到linux
通过rz命令,rz mysql-8.0.25-linux-glibc2.17-x86_64-minimal.tar.xz 上传到服务器
(如果是通过scp命令从别人服务器上搞过来的,则没有这一步)
解压
tar -xvf mysql-8.0.25-linux-glibc2.17-x86_64-minimal.tar.xz
移动,重命名(这一步可有可无,只要记住安装路径在哪里)
mv xxx /usr/local/mysql # 移动,并且换了个名字为mysql,这样方便识别。
就像之前学过习过的,/usr目录一般就是存放所有的软件的默认目录
创建mysql用户组和用户
groupadd mysql
useradd -r -g mysql mysql
# useradd -r参数表示添加的mysql用户是系统用户,不可用于登录系统。
创建数据目录并赋予权限
mkdir -p /data/mysql #创建目录
chown mysql:mysql -R /data/mysql #赋予权限,把/data/mysql整个目录的权限都授予给mysql用户。
配置mysql的配置文件my.cnf
windows系统的mysql的配置文件是my.ini文件,该文件一般在mysql的安装目录里,
linux操作系统的mysql的配置文件是my.cnf文件,该文件一般在/etc目录下。
添加以下内容:
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
# 注意:如果该文件中之前已经存在参数,则需要删除或者注释掉。
# 如果有[mysqld_safe],也要注释掉
# 另外说明一下:
mysql.pid是存放mysql服务进程pid的文件
每次重新启动mysql服务,进程pid都会发生变化。
初始化
进入到mysql的bin目录下(因为这时候我们还没有把mysql加到环境变量中)
cd /usr/local/mysql/bin
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql
--datadir=/data/mysql
--user=mysql
--initialize
初始化之后,会在/data/mysql目录下,生成一些文件。
# 注意
如果提示错误
[ERROR] --initialize specified but the data directory has files in it. Aborting.
[ERROR] Aborting
这是因为[错误] -初始化指定,但数据目录中有文件。中止
解决方法:将数据目录下已存在的文件全部删除。如:rm -rf /data/mysql/*
重新初始化:
/usr/local/mysql/bin/mysqld
--user=mysql
--basedir=/usr/local/mysql
--datadir=/data/mysql
查看密码
初始密码是在/data/mysql/mysql.err文件中的
cat /data/mysql/mysql.err
启动mysql服务
先将mysql.server放置到/etc/init.d/mysql中:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
启动服务:
service mysql start # mysql是服务的名字
ps -ef | grep mysql
到这里说明已经安装好了。
---------------
---------------
这里总结几条命令:
启动:service mysql start
启动:service mysql stop
重新启动:service mysql restart
查看mysql服务的状态: service mysql status
注意:上面4条命令中,到底是mysql还是mysqld,这个取决于你配置的service的名字,不要太纠结名字。
cp support-files/mysql.server /etc/init.d/mysql (mysql 这个是以后服务启动时的名称)
--------------
--------------
把mysql添加到环境变量
添加环境变量的目的是:以后不用每次都要到mysql的bin目录下执行操作了
在/etc/profile文件中
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin # :是连接符号
最后 source /etc/profile # 使得这个文件立即生效
使用初始密码第一次登陆mysql,然后修改密码
只有修改了初始密码,我们才能进行接下来的操作。
mysql -u root -p 输入初始密码
再执行下面三步操作,然后重新登录
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
给其他有需要的普通用户添加mysql权限
hadoop ALL=(ALL) NOPASSWD:ALL
hadoop ALL=(ALL) /usr/local/mysql/bin
# 其实有了第一条命令之后,第二条也就不用写了。
因为第一条就是hadoop可以执行root用户所有的权限,
第二条只是可以执行mysql权限。
其实像第一条那样设置是不安全的。
# 给普通用户添加完权限之后,要重登服务器。
远程工具连接mysql
如果你用navicat premium这样的工具远程连接服务器的mysql,则会提示无法连接
这里主要执行下面三个命令,就可以了。
use mysql #访问mysql库
update user set host = '%' where user = 'root'; #使root能再任何host访问
FLUSH PRIVILEGES; #刷新