沪ICP备2021032517号-1

Mysql

  |   0 评论   |   0 浏览

安装

卸载Centos7自带的mariadb

yum remove mariadb-libs -y

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

yum -y install mysql57-community-release-el7-11.noarch.rpm

yum -y install  mysql-community-server

yum -y install mysql-server

创建数据目录并授权

mkdir -p /data/mysql/{data,log,log_bin}

chown -R mysql.mysql /data/mysql

mysql配置文件修改

[mysqld]

#datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#log-error=/var/log/mysqld.log

datadir=/data/mysql/data #数据位置

socket=/data/mysql/data/mysql.sock

pid-file=/var/run/mysqld/mysqld.pid

log-error=/data/mysql/log/mysqld.log #mysql日志位置

character-set-server=utf8 #默认字符格式

server_id=100  # 设置server_id,注意要唯一

binlog-ignore-db=mysql  # 不同步

log-bin=/data/mysql/log_bin/master-mysql-bin  # 关键 开启二进制日志功能和位置。

binlog_cache_size=1M  # 为每个session 分配内存,在事务过程中用来存储二进制日志的缓存

binlog_format=mixed  # 主从复制的格式(mixed,statement,row,默认格式是statement)

#expire_logs_days=1  # 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。

slave_skip_errors=1062  # 跳过指定类型的错误,如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致

slow_query_log=ON #慢查询

slow_query_log_file=/data/mysql/log/mysql-slow.log #慢查询日志位置

long_query_time=1 #指定达到多少秒才算慢查询

skip-host-cache 

skip-name-resolve

以上配置文件开启了log-bin,可用于mysql主从配置


修改默认密码

启动

systemctl start mysqld

查看并修改初始密码

密码位于 log-error定义的文件中,不修改初始密码无法执行其他操作

grep temporary /data/mysql/log/mysqld.log

passwd.PNG

root@localhost:后面就是密码,记录下来

mysql5.7默认密码策略不能过于简单,这里先shell登录修改密码策略,执行如下命令

show variables like 'validate_password%';

set global validate_password_policy=0;

set global validate_password_length=4;

再退出修改密码

格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123

root权限设置,这一步执行后root才能远程访问mysql

use mysql;

update user set host = '%' where user = 'root';

grant all privileges on *.* to root@"%" identified by 'root';

flush privileges;

select host, user from user;

常用mysql命令

条件查询

select * from b3_solo_article where articleTags='linux' ORDER BY articleViewCount DESC;

查询表 b3_solo_article 中 字段 rticleTags='linux' 的数据 并 对 articleViewCount 字段从大到小排序

建库

create database solo character set utf8 collate utf8_bin;

授权用户

grant all privileges on solo.* to solo@"%" identified by 'solo';

flush privileges;

solo.* 代表可操作 solo库 . 就是授权所有库 "%"代表任何主机,可以写成IP。

查看

flush logs;

show master status;

show binlog events in 'master-mysql-bin.000003';

报错处理

grant all privileges on solo.* to solo@"%" identified by 'solo';

提示 :1044 - Access denied for user 'root'@'%' to database

解决

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

SELECT host,user,Grant_priv,Super_priv FROM mysql.user;

image.png

将用户的 Create_routine_priv 字段值改成 Y

FLUSH PRIVILEGES;

登陆远程mysql

mysql -h 10.10.0.33 -u zabbix -p -P 3306

备份solo库

mysqldump -uroot -proot --databases solo > solo.sql

将sql导入远程mysql

zcat create.sql.gz | mysql -h 10.10.0.33 -u zabbix -p zabbix -P 3306

脚本中执行sql

1.mysql -hhostname -uuser -ppsword -e "mysql_cmd"

mysql -hhostname -uuser -ppsword << EOF
mysql_cmd
EOF

如下简单例子:

#!/bin/bash  

mysql -hservicedb-online -uroot -proot123 -e "use test;select * from tests;"  #方法1实例  

mysql -hservicedb-online -uroot -proot123 << EOF   #方法2实例  

use test;  
select * tests;  
EOF

Mysql8.0建库授权

create database solo character set utf8 collate utf8_bin;

CREATE USER 'solo'@'%' IDENTIFIED BY 'solo';

GRANT ALL ON solo.* TO 'solo'@'%' WITH GRANT OPTION;

flush privileges;

修改密码

mysqladmin -u用户名 -p旧密码 password 新密码

mysql8.0常用 参考