Linux安装MySQL

231 阅读4分钟

Linux安装MySql

1、yum在线安装mysql

a、第一步:查看mysql是否安装

rpm -qa|grep mysql

b、第二步:卸载旧版mysql

如果mysql的版本不是想要的版本。需要把mysql卸载

[root@localhost ~]# yum remove mysql mysql-server mysql-libs mysql-common   
[root@localhost ~]# rm -rf /var/lib/mysql
[root@localhost ~]# rm /etc/my.cnf

c、搭建网络yum源

 安装一个mysql的yum源 安装之后,会在/etc/yum.repod/下多某个mysql yum源配置文件

mysql的yum源下载地址:dev.mysql.com/downloads/r…

image.png

image.png

d、安装yum源和mysql

安装yum源

yum localinstall mysql80-community-release-el7-3.noarch.rpm

安装mysql

yum -y install mysql-community-server

e、启动mysql

当安装一个服务软件时,默认是把服务启动文件放在 /etc/init.d/里面,新版mysql在该目录中没有启动文件
        
systemctl start mysqld.service  启动mysql
systemctl restart mysqld.service 重启mysql
systemctl status mysqld.service  查看msyql状态
systemctl stop mysqld.service    停止mysql
​
mysqld为mysql默认的服务名称。在linux中mysql的配置文件在/etc/my.cnf 中
service命令是redhat公司提供的管理服务的命令

f、查看mysql随机密码

cat /var/log/mysqld.log | grep password

image.png

g、修改root管理员的密码

使用随机密码登录到msyql后输入mysql的修入密码命令

//1、先按mysql密码策略修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root_123R';
​
//修改mysql密码复杂性策略
set global validate_password.policy=0;//关闭密码复杂性策略
set global validate_password.length=1; //设置最低密码长度为1//下面三项可以不设置
set global validate_password.mixed_case_count=0;//密码至少要包含的小写字母个数和大写字母个数
set global validate_password.number_count=0; // 密码至少要包含的数字个数。
set global validate_password.special_char_count=0; // 密码至少要包含的特殊字符数//再将密码修改为自己想要的,暂时不要改,改了后面配置会出错
alter user 'root'@'localhost' identified by '123456';

image.png

h、配置mysql的默认编码格式为utf8

在/etc/my.cnf配置文件中添加如下内容

在mysql的配置文件中添加如下配置:
[mysqld]
character-set-server=UTF8MB4
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
wait_timeout=1814400
[mysql]
default-character-set=UTF8MB4
[client]
default-character-set=UTF8MB4

进入到mysql库中,输入:

查看mysql编码格式
show variables like 'character%';

image.png

2、脚本安装mysql

先安装gcc c++环境

yum -y install gcc-c++

a、下载mysql

地址:dev.mysql.com/downloads/m…

b、解压mysql

将mysql压缩包上传到/usr/local目录中,然后执行解压命令

tar xvJf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

重命名文件夹

mv mysql-8.0.27-linux-glibc2.12-x86_64 mysql-8.0

在解压后的mysql根目录中创建data目录

mkdir data

c、初始化数据库

切换到bin目录下,执行初始化数据库命令,会显示mysql的临时密码

./mysqld --user=root --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data/ --initialize

红框处为随机密码

d、修改mysql的配置文件

vim /etc/my.cnf  #mysql配置文件所在目录

注释mysqld_safe

并修改如下信息

[mysqld]
basedir=/usr/local/mysql-8.0/
datadir=/usr/local/mysql-8.0/data/
socket=/tmp/mysql.sock
character-set-server=UTF8MB4
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
wait_timeout=1814400
[mysql]
default-character-set=UTF8MB4
[client]
default-character-set=UTF8MB4

e、添加mysqld服务到系统

切换到mysql-8.0根目录后执行如下命令

cp -a ./support-files/mysql.server /etc/init.d/mysql

d、授权以及添加服务

chmod +x /etc/init.d/mysql
chkconfig --add mysql

e、启动mysql

systemctl start mysqld.server  启动和停止mysql
systemctl restart mariadb.service 重启mysql
systemctl status mariadb.service  查看msyql状态
systemctl stop mariadb.service    停止mysql

如果启动时报错:Failed to start mysql.server.service: Unit not found.

解决办法:

  • 首先需要安装mariadb-server

    yum install -y mariadb-server
    
  • 启动服务

    systemctl start mariadb.service
    

如果报错:Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.则执行如下命令

cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
  • 添加到开机启动

    systemctl enable mariadb.service
    
  • 登录mysql

    mysql -u root -h 127.0.0.1 -p
    

f、临时密码无法登录问题

  • 停止mysql后,在 /etc/my.cnf中的[mysqld]的段中加上一句skip-grant-tables

  • 重新启动mysql

  • 输入登录命令

    不用输密码直接回车即可

    输入刷新本置命令

    FLUSH PRIVILEGES;
    
  • 执行授权命令

    update mysql.user set authentication_string = password('123456'), plugin = 'mysql_native_password' where user = 'root';
    

    刷新配置

    flush privileges;
    

    /etc/my.cnf中的[mysqld]中添加的skip-grant-tables 注释掉

重启mysql服务即可

3、开启mysql远程访问权限

//1、进入到系统数据库mysql,修改该库下user表的host列
update user set host='%' where user='root';
//2、执行两次下面的命令
grant all privileges on test.* to 'root'@'%';
//刷新数据库配置
flush privileges;

image.png

4、关闭linux防火墙

//临时关闭防火墙,系统重启后无效
systemctl stop  firewalld.service  

image.png

5、远程连接错误解决

如果使用mysql客户端连接linux上的mysql可能会报如下错误,该错误是因为mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

image.png

解决步骤:
 //进入到mysql数据库
  use mysql;
//更改加密方式
 ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
 //修改密码
 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 
//刷新数据库配置
flush privileges;