Linux安装MariaDB10.4
1.卸载之前的mysql、mariadb
查询yum安装的mysql、mariadb
rpm -qa | grep -i mysql
rpm -qa | grep -i mariadb
使用yum remove xxx卸载
例:yum remove mysql-community-server-5.6.51-2.el7.x86_64
查询安装包安装的mysql、mariadb
which mysql
which mariadb
将相关文件夹删除即可
例:rm -rf /usr/bin/mysql
查询mysql、mariadb相关文件夹
find / -name mysql
用rm命令删除相关文件夹即可
查看mysql进程
ps -aux | grep mysql
用kill -9 杀掉mysql进程
例:kill -9 10747
到这里mysql几乎被卸载干净了
2.下载、解压安装包
进入MariaDB官网(https://mariadb.org/),点击下载
这个10.4.27这个版本是1G,官网下载可能比较慢,如果有百度云会员的话可以用我的网盘链接下载(链接:https://pan.baidu.com/s/1t8PtW8Ydp3BzYiCDYhXhrw?pwd=6666
提取码:6666)
选择对应的版本下载
将下载完成的包上传到linux机器
使用tar命令解压安装包
tar -zxvf mariadb-10.4.27-linux-systemd-x86_64.tar.gz
等待解压完成后会出现一个与安装包同名的文件夹
3.配置
将解压出来的文件夹复制到你希望保存的路径(本例使用:/var/lib/)
cp mariadb-10.4.27-linux-systemd-x86_64 /var/lib/
将文件夹改名为mysql
mv /var/lib/mariadb-10.4.27-linux-systemd-x86_64 mysql
将mysql文件夹下的 wsrep.cnf文件复制到/etc下
cp /var/lib/mysql/support-files/wsrep.cnf /etc/
改名为my.cnf,作为MariaDB的配置文件
mv /etc/wsrep.cnf my.cnf
编辑配置文件
vim /etc/my.cnf
说明:
basedir是MariaDB所在路径,本例是/var/lib/mysql
datadir是MariaDB存放数据的路径(自定义),本例是/var/lib/mysql/data
创建MariaDB存放数据的文件夹,本例是/var/lib/mysql/data
mkdir -p /var/lib/mysql/data
赋予MariaDB文件夹(/var/lib/mysql
)一定的操作权限,不然在后面执行初始化脚本的时候会因为权限问题无法读写,保险起见,我赋予整个文件夹读、写、执行的权限。
chmod -R 777 /var/lib/mysql/
初始化数据库
/var/lib/mysql/scripts/mysql_install_db --datadir=/var/lib/mysql/data/ --basedir=/var/lib/mysql --defaults-file=/etc/my.cnf --user=mysql
注意:
- mysql_install_db这个初始化脚本一定要以绝对路径的方式调用启动,否则会
报“my_print_defaults找不到”的错误,这个原因是mysql_install_db脚本自身的bug
-
–basedir是MariaDB所在路径,本例是/
var/lib/mysql
-
–datadir是MariaDB存放数据的路径,本例是
/var/lib/mysql/data
-
–defaults-file是配置文件的路径
-
–user是前面useradd 命令添加的用户,本例添加的用户名是mysql
4.创建启动脚本
将MariaDB文件夹下的support-files/mysql.server复制到/etc/init.d下
cp /var/lib/mysql/support-files/mysql.server /etc/init.d/mysqld
编辑脚本,找到basedir、datadir并修改
vim /etc/init.d/mysqld
basedir是MariaDB所在路径,本例是/var/lib/mysql
datadir是MariaDB存放数据的路径(自定义),本例是/var/lib/mysql/data
5. 启动MariaDB
systemctl start mysqld
6. 设置mysql用户
进入MariaDB
mysql -u root
注意:
-
由于此时root未设置密码,如果显示要输入密码,回车即可
-
若出现
则使用mysql -u root -p
,密码回车即可进入
创建用户
CREATE USER 'lgy'@'%' IDENTIFIED BY 'lgy';
注意:
-
@前面的’lgy’是用户名
-
@后面的’%’ 是允许登录的主机,‘%’ 表示允许任意主机登录,'127.0.0.1’表示允许本机登录
给用户授权,并刷新权限
grant all privileges on . to ‘lgy’@‘%’ identified by ‘lgy’ with grant option;
flush privileges;
说明:
-
on *.*表示所有数据库的所有表
-
all privileges代表赋予所有权限
重启MariaDB
systemctl restart mysqld
防火墙开放MariaDB端口(本例是3306)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
firewall-cmd --reload
使用刚刚创建的用户测试连接数据库
创建用户
CREATE USER ‘lgy’@‘%’ IDENTIFIED BY ‘lgy’;
注意:
-
@前面的’lgy’是用户名
-
@后面的’%’ 是允许登录的主机,‘%’ 表示允许任意主机登录,'127.0.0.1’表示允许本机登录
给用户授权,并刷新权限
grant all privileges on . to ‘lgy’@‘%’ identified by ‘lgy’ with grant option;
flush privileges;
注意:
-
on *.*表示所有数据库的所有表
-
all privileges代表赋予所有权限
重启MariaDB
systemctl restart mysqld
防火墙开放MariaDB端口(本例是3306)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
firewall-cmd --reload
使用刚刚创建的用户测试连接数据库
7. 服务启动/停止方式
启动:systemctl start mysqld
重新启动:systemctl restart mysqld
查看状态:systemctl status mysqld
停止:systemctl stop mysqld
可能遇到的问题:
问题1:在执行sql语句时,出现“operation XXX failed”操作失败,如下图
解决方法:
-
刷新权限 => flush privileges;
-
再执行之前的sql语句
问题2:在启动MariaDB时,即systemctl start mysqld
后,很长一段时间没有反应,使用systemctl status mysqld
查看,长时间处于activating,随后启动失败。并且从错误日志中只发现连接超时(mysqld.service start operation timed out.),没有报任何错误。
解决方法:可能是配置文件格式有误。
-
将旧的配置文件备份
-
从MariaDB文件夹下的
support-files/wsrep.cnf
拷贝到 /etc
cp /var/lib/mysql/support-files/wsrep.cnf /etc/
- 编辑好配置文件后,重启mariadb