ubuntu18.04 维护mysql
1 卸载mysql
su root
> 输入密码
sudo apt-get remove --purge mysql-\*
> 是否要继续 输出y
sudo rm -f /etc/init.d/mysql
2 安装mysql
2.1 安装mysql_server
sudo apt update
sudo apt install mysql-server
2.2 运行mysql安全脚本
sudo mysql_secure_installation
2.3 安全配置
2.3.1 是否启动验证密码插件
输入y
2.3.2 密码验证策略级别
输入 0
2.3.3 设置密码
- 输入密码
- 输入y
2.3.4 删除匿名用户
- 输入y
2.3.5 远程登录
- 输入n(允许远程登录)
2.3.6 测试数据库
- 输入 y
2.3.7 重载特权表
- 输入y
2.4 登录mysql
mysql -uroot -p
> 输入密码
可以看到:
注:ubuntu18.04 server版和desktop安装mysql的方式一样
3 mysql服务管理
命令 | 说明 |
---|---|
service mysql stop | 停止服务 |
service mysql start | 开启服务 |
service mysql restart | 重启服务 |
4 mysql的配置文件
basedir = /usr/ # 安装位置
datadir = /var/lib/mysql # 数据库存储位置
port = 3306 # 端口
bind-adress = 127.0.0.1 # 绑定地址,如果填127.0.0.1 只能从本机连接
max_connections = 100 # 最大连接数
slow_query_log = 1 # 1表示开启慢查询记录功能
slow_query_log_file = slow.log # 慢查询记录文件
long_query_time = 2 # 超过2秒的为慢查询
innodb_buffer_pool_size = 3G # 默认引擎缓存,如果是专门的mysql服务器,这是为服务器总内存的70%
mysql文件地址
vi /etc/mysql/my.cnf
注:红色框是包含引用配置文件夹,所以真实的配置文件在
vi /etc/mysql/mysql.conf.d/mysqld.cnf
5 查看mysql信息
5.1 运行状态
mysql -uroot -p
>输入密码
status
命令 | 说明 |
---|---|
Threads:1 | 线程数1 |
Questions:5 | 查询次数 |
Slow queries:0 | 慢查询次数 |
Queries per second avg:0.006 | 平均每秒的查询次数 |
5.2 最大连接数
show variables like 'max_connections';
- 当前最大连接数:151
5.3 当前连接数
show global status like 'max_used_connections';
- 当前的连接数:1
5.4 缓存大小
show variables like 'innodb_buffer_pool_size';
5.5 查看增删改查条数
show status like 'innodb_rows_%';
6 导出与导入数据库
先创建一个test数据库,并在里面创建一个user表,并插入数据
create database test;
create table t_user (
id int primary key auto_increment,
username varchar(50)
);
insert into t_user (username) value ('name1');
6.1 导出
格式:
- mysqldump -uroot -p 【数据库名】 > 【导出sql地址】
把test数据库导出
mysqldump -uroot -p test > test.sql
> 输入密码
6.2 导入
流程:
- 创建一个数据库
- 把sql导入到数据库中
格式:
- mysql -uroot -p 【数据库名】 < 【导入sql地址】
例如:
- 创建test2数据库
mysql -uroot -p
>输入密码
create database test2;
exit;
- 导入test.sql
mysql -uroot -p test2 < test.sql
7 配置远程连接
7.1 修改配置文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉:bind-address = 127.0.0.1
(如果有这个配置,mysql只能本机访问)
7.2 设置权限
进入到mysql:
grant all on *.* to root@"%" identified by "kzlKNIGHT_123";
命令说明:
- all 表示所有的权限,例如可以仅仅设置查的权限:select
- *.* 第一个*表示任意数据库,第二个*表示任意表
- to 后面的为哪个用户设置权限
- @后写可以连接的IP地址,%表示任何IP
- identified by “密码”
注:
- validate_password_policy的默认值是1,需要8位,包括大小写字母、特殊字符、数字才可以。
- 设置validate_password_policy=0
- 命令:set global validate_password_policy=0;
- 这样密码只需要8位即可,但由于安全问题,不推荐
- 最后结尾一定要重启服务 service mysql restart
7.3 查看权限
use mysql
select host,user from user;
注意:
- 上面的root和下面的root不是一个
- host是localhost表示只能本机登录
7.4 流程总结
- vi /etc/mysql/mysql.conf.d/mysqld.cnf,注释掉bind-address
- 登录mysql,添加用户及权限,例如:grant all on . to root@"%" identified by “kzlKNIGHT_123”;
- 重启服务,service mysql restart