官网下载进行安装 https://dev.mysql.com/downloads/mysql/
系统用的centos7+
1- 用的 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz版本的
安装包上传工具 yum install -y lrzsz 用rz进行上传
2- 解压并进行目录授权授权
[root@db01 ~]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
[root@db01 ~]# mkdir /data/mysql/data -p
[root@db01 ~]# mkdir /application
[root@db01 ~]# mv mysql-5.7.26-linux-glibc2.12-x86_64 /application/mysql
3- 环境配置
[root@db01 ~]# yum remove -y mariadb-libs
[root@db01 ~]# useradd mysql -M -s /sbin/nologin
[root@db01 ~]# chown -R mysql.mysql /application
[root@db01 ~]# chown -R mysql.mysql /data
vim /etc/profile
export PATH=/application/mysql/bin:$PATH
[root@db01 ~]# source /etc/profile
[root@db01 ~]# mysql -V -----------测试环境
4- mysql 数据库无密码 初始化
--initialize-insecure:无密码
--user: 指定管理用户
--basedir:设置mysql软件路径
--datadir: 数据存储路径
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data
mysql 8.0需要设置不区分大小写,默认是对大小写敏感
mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data --lower-case-table-names=1
企业实战配置文件
[mysqld]
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
basedir=/data/app/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=41
port=3306
log-error=/data/mysql/logs/error.log
#用户操作审计日志,默认关闭
general_log=ON
general_log_file=/data/mysql/logs/access.log
#binlog日志
log-bin=/data/mysql/logs/mysql_bin_log.log
default-storage-engine=INNODB
max_connections=10000
#表不区分大小写
lower_case_table_names=1
#双一标准
innodb_flush_log_at_trx_commit=1
sync_binlog=1
#慢查询
slow_query_log = ON
slow_query_log_file = /data/mysql/logs/slow.log
long_query_time = 2
default_authentication_plugin=mysql_native_password
#载入密码复杂度控件
plugin-load = validate_password.so
validate_password_length = 8
validate_password_policy = 1
validate-password = FORCE
#设置全局超时时间为30秒
wait_timeout=60
#载入控制插件错误登录5次锁定180s
#plugin-load-add = connection_control.so
#connection-control = FORCE
#connection-control-failed-login-attempts = FORCE
#connection_control_min_connection_delay = 120000
#connection_control_max_connection_delay = 300000
#connection_control_failed_connections_threshold = 5
#文件限制数据包大小,最大1G
max_allowed_packet=32M
#相当于连接池,线程缓冲 内存换cpu 1G=8
thread_cache_size=64
#innodb指定内存大小来缓冲数据和索引,最大可设置80%物理内存,一般设置不超过70%
innodb_buffer_pool_size=8192M
#数据日志的大小,更大的设置可以提高性能
innodb_log_file_size=1024M
#以循环的方式将日志文件写到多个文件。推荐3
#innodb_log_files_in_group=3
[mysql]
socket=/tmp/mysql.sock
prompt=db01 [\\d]>
[mysqldump]
socket=/tmp/mysql.sock
当两个参数设置为双1的时候,写入性能最差,sync_binlog=N (N>1 ) innodb_flush_log_at_trx_commit=2 时,(在当前模式下)MySQL的写操作才能达到最高性能。
当innodb_flush_log_at_trx_commit和sync_binlog 都为 1 时是最安全的,在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。但是鱼与熊掌不可兼得,双11 会导致频繁的io操作,因此该模式也是最慢的一种方式。
当innodb_flush_log_at_trx_commit设置为0,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
当innodb_flush_log_at_trx_commit设置为2,只有在操作系统崩溃或者系统掉电的情况下,上一秒钟所有事务数据才可能丢失。
5- 配置文件 最简配置
cat >/etc/my.cnf <<EOF
#服务端
[mysqld]
#管理用户
user=mysql
#软件路径
basedir=/application/mysql
#数据存储路径
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
#端口号
port=3306
[mysql]
#客户端
socket=/tmp/mysql.sock
EOF
6- 数据库启动方式
[root@db01 ~]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@db01 ~]# /etc/init.d/mysqld start
或者 查看官方文档配置 用 systemclt start mysqld
cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
7- 密码设置,修改
(1)密码设置:
[root@db01 ~]# mysqladmin -uroot -p password 123
(2)修改密码:
mysql> alter user root@'localhost' identified by '123';
(3)忘记密码时,如何修改密码
--skip-grant-tables #跳过授权表
--skip-networking #跳过远程登录
[root@db01 ~]# /etc/init.d/mysqld stop
[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &
[root@db01 ~]# mysql
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '123';
[root@db01 ~]# mysql -uroot -p 最后退出重启启动数据库进行验证
补充 mysql两种连接方式:
TCP/IP:mysql -uroot -poldboy123 -h 10.0.0.51 -P3306
Socket:mysql -uroot -poldboy123 -S /tmp/mysql.sock
8- 权限管理
(1)授权语法
grant 权限 on 作用目标 to 用户 identified by 密码 with grant option;
with grant option参数:授予管理员权限
例1. 创建一个管理员用户user01,可以通过10网段,管理所有数据库.(*.*是所有库和表即 库名.表明)
grant all on *.* to user01@'10.0.0.%' identified by '123' with grant option;
给已存在的用户授权
GRANT ALL PRIVILEGES ON *.* TO 'user02'@'localhost';
(2)权限回收
mysql> show grants for user01@'10.0.0.%'; 或者查所有的 mysql>show grants; 查看用户
mysql> revoke delete on *.* from 'user01'@'10.0.0.%';
mysql> show grants for user01@'10.0.0.%';
(3)删除用户
drop user user01@'10.0.0.%' ;
补充说明:grant 授权的命令也可以用来修改密码。
(4)权限列表 all是所有
SELECT, INSERT, UPDATE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
============错误解决============
error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
centos: yum install libaio-devel.x86_64 -y
离线环境安装对应的包,需要在可以访问外网的机器上下载对应的包和依赖
yum install --downloadonly --downloaddir=/root/mypackages/ libaio-devel
rpm -i --force --nodeps xxx.rpm #强制安装
yum localinstall -y gcc-c++ /root/mypackages/*
# mysql -uroot -p mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory sudo apt install libncurses5 -y 或
ln -s /usr/lib/libncursesw.so.6 /usr/lib/libtinfo.so.5
#卸载程序并删除配置文件sudo apt-get --purge remove <programname>
sudo apt-get --purge remove xxx
#只卸载程序保留相关配置文件sudo apt-get remove xxx
MySQL8.0登录提示caching_sha2_password问题解决方法
配置文件修改
default_authentication_plugin=mysql_native_password
alter user root@"%" identified with mysql_native_password by "123";
select host,user,plugin from mysql.user;