[linux系统]安装mysql(安装)

254 阅读5分钟

参考网址

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

image.png

也可以通过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

image.png

启动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

image.png

到这里说明已经安装好了。

---------------
---------------
这里总结几条命令:
启动: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,则会提示无法连接

image.png

 这里主要执行下面三个命令,就可以了。
 use mysql                                            #访问mysql库
 update user set host = '%' where user = 'root';      #使root能再任何host访问
 FLUSH PRIVILEGES;                                    #刷新
 

image.png