删除原有的mariadb
先查看一下是否已经安装
rpm -qa|grep mariadb
删除mariadb,如果第一步检查没有可以跳过
rpm -e --nodeps mariadb-libs
下载安装包,Centos系统选择Red Hat选项。
(在线安装参考:https://blog.csdn.net/qq_51470789/article/details/131893847)
mysql下载地址
将下载好的mysql安装包存放到/usr/local/soft中
切换到/usr/local/soft
cd /usr/local/soft
解压缩mysql离线安装包
tar -xvf mysql-8.0.16-2.el7.x86_64.rpm-bundle.tar
查看解压缩之后的文件
ll
包含以下rpm包
mysql-community-libs-8.0.16-2.el7.x86_64.rpm
mysql-community-embedded-compat-8.0.16-2.el7.x86_64.rpm
mysql-community-devel-8.0.16-2.el7.x86_64.rpm
mysql-community-server-8.0.16-2.el7.x86_64.rpm
mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm
mysql-community-client-8.0.16-2.el7.x86_64.rpm
mysql-community-common-8.0.16-2.el7.x86_64.rpm
mysql-community-test-8.0.16-2.el7.x86_64.rpm
5、安装rmp包
【必须安装】
rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.16-2.el7.x86_64.rpm
【非必须安装】
rpm -ivh mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-devel-8.0.16-2.el7.x86_64.rpm
rpm -ivh mysql-community-test-8.0.16-2.el7.x86_64.rpm
安装完成后,建议先调整相关设置,然后在初始化。
新建数据库存放目录
mkdir /data/mysql
新建mysql日志存放目录
mkdir /data/mysql/log
将文件存储放在data目录,并修改mysql的大小写敏感配置
vim /etc/my.cnf
修改为以下内容
#mysql数据库文件存放位置
#datadir=/var/lib/mysql
datadir=/data/mysql/data
socket=/var/lib/mysql/mysql.sock
#mysql日志存放位置
#log-error=/var/log/mysqld.log
log-error=/data/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#mysql忽略大小写
lower_case_table_names=1
初始化mysql
mysqld --initialize;
添加目录授权
chown -R mysql:mysql /data/mysql
启动MySQL服务
systemctl start mysqld
关闭MySQL服务
systemctl stop mysqld
设置MySQL的自动启动
systemctl enable mysqld
添加用户,修改密码
使用默认密码初次登录后, 必须要重置密码
查看默认密码, 如下默认密码为"e53xDalx.*dE",如果没有查询到,默认密码为空,直接用空密码登录
grep 'password' /data/mysql/log/mysqld.log |head -n 1
2019-03-06T01:53:19.897262Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: e53xDalx.*dE
使用默认密码登陆,如果默认密码为空,直接用空密码登录,不加 -p即可
mysql -u root -p
输入密码
e53xDalx.*dE
mysql> select version();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
报错提示必须要重置初始密码, 下面开始重置mysql登录密码(注意要切换到mysql数据库,使用use mysql)
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改mysql密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456@pxs';
刷新mysql
mysql> flush privileges;
退出
mysql> exit
重新使用新密码登录mysql
mysql -u root -p
mysql> select version();
±----------+
| version() |
±----------+
| 8.0.15 |
±----------+
1 row in set (0.00 sec)
查看服务端口
mysql> show global variables like 'port';
±--------------±------+
| Variable_name | Value |
±--------------±------+
| port | 3306 |
±--------------±------+
1 row in set (0.01 sec)
查看mysql连接的授权信息
mysql> select host,user,authentication_string from mysql.user;
±----------±-----------------±-----------------------------------------------------------------------+
| host | user | authentication_string |
±----------±-----------------±-----------------------------------------------------------------------+
| localhost | mysql.infoschema | $A 005 005 005THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | $A 005 005 005THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | $A 005 005 005THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | $A 005 005 005{7J0=4Dc7Jym8eI/FU4jimKWFvkD9XmoAkF1ca5.Un0bc6zgmPtU.0 |
±----------±-----------------±-----------------------------------------------------------------------+
4 rows in set (0.00 sec)
Mysql8.0默认是不能使用root账号进行远程登录的! root账号只能本地登录!
mysql> create user 'admin'@'%' identified by '123456test@pxs';
mysql> grant all privileges on *.* to 'admin'@'%' with grant option;
mysql> flush privileges;
mysql> select host,user,authentication_string from mysql.user;
错误排除,查看日志:
cat /var/log/mysqld.log
mysql连接数设置和查看
临时设置,重启后失效
set global max_connections=1000;
永久调整
设置MySQL下面的my.ini文件里修改max_connections
MySQL安装路径查询命令:
进入mysql命令行输入:
show variables like "%char%";
Mysql查看连接数(连接总数、活跃数、最大并发数)
show variables like '%max_connection%'; #查看最大连接数
set global max_connections=1000; #重新设置最大连接数
mysql> show status like 'Threads%';
±------------------±------+
| Variable_name | Value |
±------------------±------+
| Threads_cached | 32 |
| Threads_connected | 10 |
| Threads_created | 50 |
| Threads_rejected | 0 |
| Threads_running | 1 |
±------------------±------+
5 rows in set (0.00 sec)
Threads_connected :这个数值指的是打开的连接数.
Threads_running :这个数值指的是激活的连接数,这个数值一般远低于connected数值.
Threads_connected 跟show processlist结果相同,表示当前连接数。准确的来说,Threads_running是代表当前并发数
查询数据库当前设置的最大连接数
mysql> show variables like '%max_connection%';
±----------------------±------+
| Variable_name | Value |
±----------------------±------+
| extra_max_connections | |
| max_connections | 2512 |
±----------------------±------+
2 rows in set (0.00 sec)
在/etc/my.cnf里面设置数据库的最大连接数
[mysqld]
max_connections = 1000
MySQL服务器的线程数需要在一个合理的范围之内,这样才能保证MySQL服务器健康平稳地运行。Threads_created表示创建过的线程数,通过查看Threads_created就可以查看MySQL服务器的进程状态。
mysql> show global status like 'Thread%';
±------------------------±------+
| Variable_name | Value |
±------------------------±------+
| Threadpool_idle_threads | 0 |
| Threadpool_threads | 0 |
| Threads_cached | 29 |
| Threads_connected | 13 |
| Threads_created | 50 |
| Threads_rejected | 0 |
| Threads_running | 1 |
±------------------------±------+
7 rows in set (0.00 sec)
如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。
Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器thread_cache_size的值:
mysql> show variables like 'thread_cache_size';
±------------------±------+
| Variable_name | Value |
±------------------±------+
| thread_cache_size | 100 |
±------------------±------+
1 row in set (0.00 sec)
命令:show processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show processlist命令只列出前100条,如果想全列出请使用show full processlist;
mysql> show processlist;
命令:show status;
mysql>show status like '%变量名%';
变量名如下:
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。
Connections 试图连接MySQL服务器的次数。
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
Delayed_writes 用INSERT DELAYED写入的行数。
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。
Handler_delete 请求从一张表中删除行的次数。
Handler_read_first 请求读入表中第一行的次数。
Handler_read_key 请求数字基于键读行。
Handler_read_next 请求读入基于一个键的一行的次数。
Handler_read_rnd 请求读入基于一个固定位置的一行的次数。
Handler_update 请求更新表中一行的次数。
Handler_write 请求向表中插入一行的次数。
Key_blocks_used 用于关键字缓存的块的数量。
Key_read_requests 请求从缓存读入一个键值的次数。
Key_reads 从磁盘物理读入一个键值的次数。
Key_write_requests 请求将一个关键字块写入缓存次数。
Key_writes 将一个键值块物理写入磁盘的次数。
Max_used_connections 同时使用的连接的最大数目。
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables 已经打开的表的数量。
Questions 发往服务器的查询的数量。
Slow_queries 要花超过long_query_time时间的查询数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多长时间,单位秒。