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…
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
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';
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%';
2、脚本安装mysql
先安装gcc c++环境
yum -y install gcc-c++
a、下载mysql
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;
4、关闭linux防火墙
//临时关闭防火墙,系统重启后无效
systemctl stop firewalld.service
5、远程连接错误解决
如果使用mysql客户端连接linux上的mysql可能会报如下错误,该错误是因为mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
解决步骤:
//进入到mysql数据库
use mysql;
//更改加密方式
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
//修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
//刷新数据库配置
flush privileges;