修改用户的用户名:
update user set user='新的用户名' where user='原用户名';
select User.Host from user; #可以查看当前数据库里有哪些用户,有哪些网段的权限
mysql> select User,Host from mysql.user;
+------------+----------------+
| User | Host |
+------------+----------------+
| repl_slave | % |
| mastermha | 10.0.% |
| slaveall | 10.0.% |
| root | 127.0.0.1 |
| root | ::1 |
| | host-10-0-32-6 |
| root | host-10-0-32-6 |
| | localhost |
| root | localhost |
+------------+----------------+
9 rows in set (0.00 sec)
mysql>
用户权限:
revoke PROCESS,SUPER,FILE ON *.* from '用户名'@'IP' #去掉用户的权限
show grants for '用户名'@'IP' #查看用户有哪些权限
grant FILE ON *.* to 'yanfa'@'%'; #给用户授权
DROP USER 'test1'@'localhost'; #删除用户
修改mysql密码
alter user 'root'@'localhost' identified by '123456';
修改参数值
合理配置"wait_timeout","interactive_timeout"的参数值
wait_timeout:
服务器关闭非交互连接之前等待活动的秒数。
在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。
参数默认值:28800秒(8小时)
interactive_timeout:
服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
参数默认值:28800秒(8小时)
MySQL服务器所支持的最大连接数是有上限的,因为每个连接的建立都会消耗内存,因此我们希望客户端在连接到mysql处理完相应的操作后,应该断开连接并释放占用的内存。如果你的mysql有大量的闲置连接,他们不仅会白白消耗内存,而且如果连接一直在累加而不断开,最终肯定会达到mysql的连接上限数,这会报’too many connections’的错误。对于wait_timeout的值设定,应该根据系统的运行情况来判断。在系统运行一段时间后,可以通过show processlist命令查看当前系统的连接状态,如果发现有大量的sleep状态的连接进程,则说明该参数设置的过大,可以进行适当的调整小些。
修改配置文件: /etc/my.cnf
【mysqld】
Wait_timeout= 30
Interactive_timeout=31536000 #修改配置文件需要重启mysql才能生效
数据库sql语句修改
set global Interactive_timeout=设置值
set global Wait_timeout= 设置值 #一次性,重启失效,可用于动态修改
mysql> show variables like '%Wait_timeout%'; #查看参数值,也就是所谓的模糊查询
+--------------------------+----------+
| Variable_name | Value |
+--------------------------+----------+
| innodb_lock_wait_timeout | 50 |
| lock_wait_timeout | 31536000 |
| wait_timeout | 28000 |
+--------------------------+----------+
show variables like '%char%'; #查看mysql的编码
show variables like 'max_binlog_cache_size'; #查看一下这个参数的大小
备份mysql
mysqldump -uroot -p123456789 --master-data=2 --single-transaction -A >/root/all.sql
导库
在数据库里面执行source 数据库文件.sql
在命令行执行
mysql -uroot -p123456789 </root/all.sql
查询某个库的大小
use information_schema;
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='host_process'
或者,找到mysql的数据目录(ps aux|grep mysql),找到需要查询的目录(比如db1目录),然后du -sh db1把结果截图发给问的人就行
[root@host-10-0-32-6 ~]# ps aux|grep mysql
root 7706 0.0 0.0 113424 1584 ? S Apr24 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/3406/data --pid-file=/data/mysql/3406/mysql3406.pid
mysql 8089 0.2 3.2 2444588 264072 ? Sl Apr24 9:49 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/3406/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/3406/log/error.log --pid-file=/data/mysql/3406/mysql3406.pid --socket=/data/mysql/3406/mysql.sock --port=3406
--datadir=/data/mysql/3406/data #这个就是数据目录
[root@host-10-0-32-6 ~]# cd /data/mysql/3406/data
[root@host-10-0-32-6 data]# ls
auto.cnf host-10-0-32-6-relay-bin-group_replication_applier.000006 ibtmp1
binlog.000001 host-10-0-32-6-relay-bin-group_replication_applier.000007 mysql
binlog.000002 host-10-0-32-6-relay-bin-group_replication_applier.index performance_schema
binlog.000003 host-10-0-32-6-relay-bin-group_replication_recovery.000001 private_key.pem
binlog.index host-10-0-32-6-relay-bin-group_replication_recovery.000002 public_key.pem
ca-key.pem host-10-0-32-6-relay-bin-group_replication_recovery.index server-cert.pem
ca.pem ib_buffer_pool server-key.pem
client-cert.pem ibdata1 sys
client-key.pem ib_logfile0
db1 ib_logfile1
[root@host-10-0-32-6 data]# du -sh db1
112K db1
查看表如何创建
mysql> use db2;
mysql> show tables;
+---------------+
| Tables_in_db2 |
+---------------+
| t1 |
+---------------+
1 row in set (0.00 sec)
mysql> show create table t1;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t1 | CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL,
`v1` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
这个就是当初创建这个库的语句,可以粘贴下来去别的数据库上创建
CREATE TABLE `t1` (
`id` int(11) DEFAULT NULL,
`v1` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
1 row in set (0.05 sec)
但是创建好以后表里没数据,需要我们手动添加数据
insert into 表名 (字段1,字段2) values (值1,值2); 用这个可以给表里添加数据
指定权限授权
GRANT SElECT ON xueya.* TO 'xytest'@'%' IDENTIFIED BY "6TfBAHypbGL@hRUS"; #只读权限
GRANT SElECT ON `xueya-0`.* TO 'xytest'@'%' IDENTIFIED BY "6TfBAHypbGL@hRUS"; #带特殊字母的数据库用反引号