centos7安装mysql8
卸载MariaDB
MariaDB
MySQL 的一个分支,主要由开源社区维护
- CentOS 7+ 不再默认使用 MySQL 数据库,而是 MariaDB 数据库。
- 直接安装 MySQL 会与 MariaDB 的文件冲突。
# 使用yum卸载
yum remove mariadb
安装mysql压缩包
- 去官网找mysql官网
- wget下载
# 感觉挺快的
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
安装mysql和配置
安装
直接给代码吧。反正解压就行,不用编译。
# 解压
tar -xJvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.x
# 改个名
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql8
# 直接进去查看bin文件夹在不在,进去运行版本确认成功
cd ./bin
./mysql --version
# 如何配置环境变量,会配置自己配就行
# 先输出PATH
echo $PATH
# /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin
# 再找自己bin的位置
pwd
# /opt/mysql8/bin
# 然后暂时配置就是直接写,要全局配就丢/etc/profile
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/opt/mysql8/bin"
# 全局
echo PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/opt/mysql8/bin" >> /etc/profile
配置文件
- 先配置用户和赋予权限(直接往下复制就行)(需要自定义就自定义,数据文件丢/data了)
# 添加用户组
groupadd mysql
# 创建mysql用户
useradd -r -g mysql mysql
# 创建数据目录
mkdir -p /data/mysql8_data
# 更改属主和数组
chown -R mysql:mysql /data/mysql8_data
# 更改模式
chmod -R 750 /data/mysql8_data
- 配置文件my.conf
我的配置文件放/opt/mysql8/conf/my.conf了,配置如下,搞个可以直接复制的
[mysql]
default-character-set=utf8mb4
[client]
port =3306
socket =/tmp/mysql.sock
[mysqld]
port =3306
server-id =3306
user =mysql
# 安装目录
basedir =/opt/mysql8
# 数据目录
datadir =/data/mysql8_data/mysql
log-bin =/data/mysql8_data/mysql/mysql-bin
innodb_data_home_dir =/data/mysql8_data/mysql
innodb_log_group_home_dir =/data/mysql8_data/mysql
# 日志和进程数据
log-error =/data/mysql8_data/mysql.log
pid-file =/data/mysql8_data/mysql.pid
# 服务端字符集
character-set-server =utf8mb4
lower_case_table_names =1
autocommit =1
# 下面的可不修改
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128
#query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
binlog_format=mixed
binlog_expire_logs_seconds =864000
# 创建表时使用的默认存储引擎
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
- 搞完了直接初始化(报错了就大概是流程写错了)
-
--defaults-file:指定配置文件(要放在--initialize 前面)
-
--user: 指定用户
-
--basedir:指定安装目录
-
--datadir:指定初始化数据目录
-
--intialize-insecure:初始化无密码(否则生成随机密码)
mysqld --defaults-file=/opt/mysql8/conf/myconf --basedir=/opt/mysql8 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure
- 启动/登录/改密码
# 启动 (后面加个&让终端不被挂起,打个回车就能继续命令)
mysqld_safe --defaults-file=/opt/mysql8/conf/my.conf &
# (首次)登录
mysql -u root --skip-password
# 进入命令行成功就可以改密码了
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
# 刷新权限
FLUSH PRIVILEGES;
- 之后日常使用可以在命令行修改密码
# 修改密码
mysqladmin -u用户名 -p旧密码 password 新密码
日常使用mysql
- mysql未启动(注意配置文件位置)
mysqld_safe --defaults-file=/opt/mysql8/conf/my.conf &
- mysql进入
mysql -uroot -p
然后输入密码就行 - 在命令行
退出命令行exit
。
关闭mysql服务shutdown
(注意别在linux上输入,不然给关机了)
对了,需要配置远程一类或者参考大佬的文章
https://www.cnblogs.com/zhourx/p/17558946.html
补充一下mariadb的使用。
因为做补充,不用很详细的语句,可以仓库这位博主的博客:https://www.cnblogs.com/pyyu/p/9467289.html
- yum安装
配个新的yum仓库,然后使用yum安装
# 创建一个新仓库
vi /etc/yum.repos.d/MariaDB.repo
# 添加repo仓库配置
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
# 接下来yum安装就行
yum install MariaDB-server MariaDB-client
-
基本使用
和yum操作平常的服务一样的
systemctl start mariadb #启动MariaDB systemctl stop mariadb #停止MariaDB systemctl restart mariadb #重启MariaDB systemctl enable mariadb #设置开机启动
-
数据库基本操作
-
新安装的操作:
# 进行初始化 mysql_secure_installation # 接下来会有一堆选项,自己选就是
-
可能会使用的命令
#修改mysql密码 MariaDB [(none)]> set password = PASSWORD('redhat123'); # 创建新用户 create user yuchao@'127.0.0.1' identified by 'redhat123'; # 分配用户 use mysql select host,user,password from user where user='yuchao' # 授权 grant 权限 on 数据库.表名 to 账户@主机名 # 对特定数据库中的特定表授权 grant 权限 on 数据库.* to 账户@主机名 # 对特定数据库中的所有表给与授权 grant 权限1,权限2,权限3 on *.* to 账户@主机名 # 对所有库中的所有表给与多个授权 grant all privileges on *.* to 账户@主机名 # 对所有库和所有表授权所有权限 ############### # 允许root用户远程登录 # mysql好像是使用:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; grant all privileges on *.* to root@'%' identified by 'centos' # 允许root用户在任意主机地址通过centos密码登录
-
sql数据库备份
# 在shell当中导出备份 mysqldump -u root -p --all-databases > /tmp/db.sql mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql # 然后可以在新数据库读取文件 mysql -uroot -p < /tmp/db.sql # 或者进入mysql当中运行 source /tmp/db.sql
mysql忘记密码怎么办
-
通过root用户登录,进入etc中mysql的配置文件,并修改解除权限
# 在mysqld系列标签当中添加参数 [mysqld] # 关闭登录授权 skip-grant-tables # 出来重启mysql systemctl restart mariadb # 不是yum安装的话,可能要直接把进程停了
-
进入数据库修改密码
mysql -uroot -p # 此时已进入,修改密码sql语句 use mysql; update user set authentication string=password("新密码") where host="localhost" and user="root"; # 刷新授权 flush privileges;
-
最后注掉skip-grant-tables的授权跳过,就可以输密码重新登录了。
出现中文没法写入数据库怎么办
-
先进入数据库查看编码
-- 默认已进入数据库 \s
输出如下:
-
如果图中不是使用utf8编码的,就需要修改配置文件并重新启动mysql
主要的配置修改如下:
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci log-error=/var/log/mysqld.log [client] default-character-set=utf8 [mysql] default-character-set=utf8
-
重启mysql即可读取中文。