1. 查看是否安装mysql
安装mysql之前,需要查看是否安装了mysql,如果安装则进行卸载,命令:
rpm -qa | grep mysql
卸载命令:
rpm -e --nodeps mysql-*
查看是否安装mariadb数据库,如果存在,则卸载,命令:
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64
2. 下载mysql安装包
结合命令cat /etc/system-release
和getconf LONG_BIT
查看需要下载的mysql包,命令分别表示系统发行版本和位数。
下载地址:点击访问>mysql官方下载地址<
操作系统可选Linux - Generic
,这个下面的安装包是通用的。
本文以mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
为例。链接地址:https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
3. 解压及配置文件
把下载的安装包放到/data/mysql
下并进行解压,然后把解压后的文件重命名为mysql
:
[root@% mysql]# pwd
/data/mysql
[root@% mysql]# ls
mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
[root@% mysql]# tar -Jxvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
[root@% mysql]# mv mysql-8.0.27-linux-glibc2.12-x86_64 mysql
[root@% mysql]# ls
mysql mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
复制配置文件并编辑,把mysql
下的配置文件覆盖到/etc/my.cnf
,并修改/etc/my.cnf
内容:
[root@% support-files]# pwd
/data/mysql/mysql/support-files
[root@% support-files]# ls
magic my-default.cnf mysqld_multi.server mysql-log-rotate mysql.server
[root@% support-files]# cp /data/mysql/mysql/support-files/my-default.cnf /etc/my.cnf
[root@% support-files]# vin /etc/my.cnf
配置内容如下,可根据需要增加其他配置:
[mysqld]
basedir=/data/mysql/mysql
datadir=/data/mysql/mysql/data
port=3306
user=mysql
# 允许最大连接数
max_connections=400
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 排序规则
collation_server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
max_allowed_packet=16M
#linux不区分表大小写0区分1不区分
lower_case_table_names=1
#log-error=/var/log/mariadb/mariadb.log
log-error=/data/mysql/mysql/log/mysql.err
pid-file=/data/mysql/mysql/mysql.pid
# 开启binlog需要指定server-id
server-id=1
# binlog文件的前缀
#log-bin=mysql-bin
# binlog文件保存的天数,默认0表示永久保存
#expire_logs_days=15
# 缓存大小,一般生产服务器需要配置,建议为服务器总内存50%,默认128M
innodb_buffer_pool_size=4G
innodb_flush_log_at_trx_commit=1
# socket=/var/lib/mysql/mysql.sock
# 建议就放在这个位置,登录mysql时会从这里找mysql.sock
socket=/tmp/mysql.sock
innodb_data_file_path = ibdata1:1G;ibdata2:12M:autoextend:max:5G
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#default_authentication_plugin=mysql_native_password
创建mysql用户组及权限
创建mysql
用户组和用户并修改权限:
[root@% mysql]# groupadd mysql
[root@% mysql]# useradd -r -g mysql mysql
[root@% mysql]# chown mysql:mysql -R /data/mysql/mysql
创建日志和数据目录
在mysql
目录下创建data
和log
目录:
[root@% mysql]# mkdir data log
初始化数据库
进入bin
目录并执行初始化命令:
[root@% bin]# pwd
/data/mysql/mysql/bin
[root@% bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/data/mysql/mysql/ --datadir=/data/mysql/mysql/data/ --user=mysql --initialize
运行后查看/data/mysql/mysql/log
目录下的日志文件mysql.err
,如果初始化成功,会出现初始化的root
密码:
2022-07-04T00:57:32.985124Z 0 [System] [MY-013169] [Server] /data/mysql/mysql/bin/mysqld (mysqld 8.0.27) initializing of server in progress as process 16593
2022-07-04T00:57:32.993320Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-07-04T00:57:39.091347Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-07-04T00:57:39.898388Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2022-07-04T00:57:39.898411Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2022-07-04T00:57:40.027646Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iio1f4Gdfk:h
如果失败,则根据日志文件的信息自行排错。(按照上面的配置文件,可能是log-error
的配置导致的失败,把log-error
放到[mysqld_safe]
块下再试试。具体原因可以自己搜搜)。
设置mysql环境变量
把/data/mysql/mysql/bin
加入到环境变量中,在末尾追加:
export PATH=/data/mysql/mysql/bin:$PATH
使用source /etc/profile
使其生效。
如果配置后,使用mysql
命令提示bash: mysql: command not found...
,那么再添加一个软连接:
[root@% bin]# ln -s /data/mysql/mysql/bin/mysql /usr/bin
设置开机自启
[root@% bin]# cp /data/mysql/mysql/support-files/mysql.server /etc/init.d/mysql
[root@% bin]# cp /data/mysql/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
增加 mysql
服务控制脚本执行权限
[root@% bin]# chmod +x /etc/rc.d/init.d/mysql
将 mysql
服务加入到系统服务
[root@% bin]# chkconfig --add mysql
启/停/登录
[root@% bin]# service mysql start
[root@% bin]# service mysql stop
[root@% bin]# service mysql restart
[root@% bin]# mysql -uroot -p
用户相关
修改root默认密码
5.7版本可使用以下语句进行修改:
mysql> set password for root@localhost = password('123456');
8版本及以上就需要使用以下语句进行修改:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
注意,上面的WITH mysql_native_password
可以去掉或者换成WITH caching_sha2_password
。其中caching_sha2_password
是8版本及以上的默认值。
新增用户
mysql8版本在创建新用户时,请先创建用户,再赋予权限:
mysql> create user 'tom2'@'%' identified by '123456';
mysql> grant all privileges on *.* to 'tom'@'%' with grant option;
mysql> flush privileges;
注意,新增的用户如果用Navicat连接提示2059 - authentication plugin 'caching_sha2_password' xxx
,请看下面常见问题的解决方案。
其他操作
请跳转到Linux安装MySQL5.7查看。
常见问题
2059 - authentication plugin ‘caching_sha2_password’
如果使用Navicat连接数据库提示以上错误,是因为MySQL新版本(8以上版本)的用户登录方式默认是【caching_sha2_password】,Navicat不支持这种用户登录账户加密方式。
具体用户是哪种登录方式可使用以下命令查看:
mysql> select host,user,plugin from mysql.user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | tom | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | mysql_native_password |
+-----------+------------------+-----------------------+
可以看到,如果我们使用navicat登录tom用户的话,就会报错。
只需将tom用户的plugin改为mysql_native_password
即可正常登录:
mysql> ALTER USER 'tom'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
– end –