5.mysql

发表于 未分类 分类,标签:
------------------------------------------------
备份库
mysqldump -u root -p lbu_api > lbu_api_backup.sql
CREATE DATABASE lbu_user;
mysql -u root -p lbu_user < lbu_api_backup.sql

权限
SHOW GRANTS FOR 'lbu'@'%';
GRANT ALL PRIVILEGES ON lbu_user.* TO 'lbu'@'%';
FLUSH PRIVILEGES;
ALTER USER 'lbu'@'%' IDENTIFIED BY 'Shimujiuxia@2028';
FLUSH PRIVILEGES;


------------------------------------------------
常用语句

mysql8
修改root默认密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'shimujiuxia';
修改localhost为所有地点登录
use mysql;
update user set host='%' where user='localhost';

创建用户
CREATE USER 'root'@'%' IDENTIFIED BY 'shimujiuxia';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'shimujiuxia';
赋权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
刷新权限
FLUSH PRIVILEGES;

mysql8.0改密码:
alter user 'root'@'localhost' identified by 'shimujiuxia';
创建任意地址用户
create user 'root'@'%' identified by 'shimujiuxia';
grant all on *.* to 'root'@'%';
alter user 'root'@'%' identified with mysql_native_password by 'shimujiuxia';
删除用户及权限
delete from user where user='root' and host='%';
revoke all privileges on *.*  from 'root'@'localhost';
创建数据库设置编码
create database lei default charset utf8 collate utf8_general_ci;

删除用户
DROP USER 'example_user'@'localhost';
检查是否有残留权限
SELECT * FROM mysql.user WHERE user = 'example_user';
SELECT * FROM mysql.db WHERE user = 'example_user';
SELECT * FROM mysql.tables_priv WHERE user = 'example_user';
删除残留的权限记录(如果有)
DELETE FROM mysql.db WHERE user = 'example_user';
DELETE FROM mysql.tables_priv WHERE user = 'example_user';

创建用户
CREATE user 'root'@'%';
#修改密码
alter user 'root'@'%' identified with mysql_native_password by 'shimujiuxia';
创建新的数据库
create database db_name default character set utf8mb4 collate utf8mb4_unicode_ci;
把新的数据库授权给新用户
grant all privileges on db_name.* to "mysql"@"%";

mysql5.6
新增用户
-- 创建新的root用户,替换'new_password'为您想要设置的密码
CREATE USER 'root'@'%' IDENTIFIED BY 'new_password';
-- 给予新用户从任何主机连接的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 刷新权限使更改生效
FLUSH PRIVILEGES;

mysql5.6改root密码:
update mysql.user set password=PASSWORD('shimujiuxia') where User='root'; 
flush privileges;
给远程用户权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'shimujiuxia';
flush privileges;

删除用户
DELETE FROM mysql.user WHERE User='root' AND Host='%';
FLUSH PRIVILEGES;


------------------------------------------------
yum安装mysql5.7
yum list |grep mysql
rpm -qa|grep maria 找出所有关于mariaDB的安装包
yum remove -y maria* 在后面加上上面的包名删除

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
    rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装这个包后,会获得两个mysql的yum repo源
    /etc/yum.repos.d/mysql-community.repo
    /etc/yum.repos.d/mysql-community-source.repo.

yum install mysql-server --nodeps --force

systemctl start mysqld 启动mysql服务

systemctl enable mysql 设置mysql开机启动


------------------------------------------------
mysql目录
1. mysql数据库的data目录 /var/lib/mysql/
2. mysql头文件:/usr/include/mysql/
3. mysql可执行文件: /usr/bin/
4. mysql库文件:/usr/lib64/mysql
3. mysql日志文件:/var/log/mysqld.log


------------------------------------------------
playbook_mysql8配置
vim mysql8.yml
---
- name: Install and configure MySQL 8.0.30
  hosts: sl
  become: true
  tasks:
    # 确保必要的依赖已安装
    - name: Install required dependencies
      ansible.builtin.yum:
        name:
          - libaio
          - numactl
          - tar
        state: present

    # 创建必要的目录
    - name: Ensure installation and data directories exist
      ansible.builtin.file:
        path: "{{ item }}"
        state: directory
        mode: '0755'
      with_items:
        - /data
        - /data/mysql8
        - /data/mysql8_data

    # 分发 MySQL 安装包
    - name: Copy MySQL installation package to target hosts
      ansible.builtin.copy:
        src: /data/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
        dest: /data/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
        mode: '0644'

    # 解压 MySQL 安装包
    - name: Extract MySQL installation package
      ansible.builtin.unarchive:
        src: /data/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
        dest: /data/mysql8
        remote_src: yes

    # 创建 MySQL 用户和组
    - name: Create MySQL user and group
      ansible.builtin.user:
        name: mysql
        system: yes
        shell: /bin/false

    # 设置数据目录权限
    - name: Set permissions for MySQL data directory
      ansible.builtin.file:
        path: /data/mysql8_data
        state: directory
        owner: mysql
        group: mysql
        mode: '0755'

    # 配置 MySQL 服务文件
    - name: Replace MySQL configuration file with new content
      ansible.builtin.copy:
        dest: /etc/my.cnf
        content: |
          [mysqld]
          basedir=/data/mysql8/mysql-8.0.30-linux-glibc2.12-x86_64
          datadir=/data/mysql8_data
          port=3306
          socket=/tmp/mysql.sock
          user=mysql
          log-error=/var/log/mysqld.log
          # Enable InnoDB with file per table
          innodb_file_per_table=1
          # Additional options can be added below as needed
        mode: '0644'
        backup: yes  # 可选,保存备份

    #创建日志文件赋权
    - name: Create mysqld.log file if it does not exist
      ansible.builtin.file:
        path: /var/log/mysqld.log
        state: touch  # 创建文件,如果文件不存在
        mode: '0660'  # 文件权限,mysql 用户和组可读写
        owner: mysql  # 设置文件所有者为 mysql 用户
        group: mysql  # 设置文件所属组为 mysql 组


    # 初始化 MySQL 数据目录
    - name: Initialize MySQL data directory
      ansible.builtin.shell: |
        /data/mysql8/mysql-8.0.30-linux-glibc2.12-x86_64/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql8/mysql-8.0.30-linux-glibc2.12-x86_64 --datadir=/data/mysql8_data
      args:
        executable: /bin/bash

    # 配置 MySQL 启动脚本
    - name: Create MySQL systemd service file
      ansible.builtin.copy:
        dest: /etc/systemd/system/mysqld.service
        content: |
          [Unit]
          Description=MySQL Server
          After=network.target
          [Service]
          #Type=simple
          Type=notify
          ExecStart=/data/mysql8/mysql-8.0.30-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql
          #ExecStop=/data/mysql8/mysql-8.0.30-linux-glibc2.12-x86_64/bin/mysqladmin shutdown -u root -pabc123456
          ExecStop=/data/mysql8/mysql-8.0.30-linux-glibc2.12-x86_64/bin/mysqladmin shutdown --socket=/data/mysql8_data/mysql.sock
          User=mysql
          Group=mysql
          LimitNOFILE=65535
          Restart=on-failure
          [Install]
          WantedBy=multi-user.target
        mode: '0644'

    # 启动并启用 MySQL 服务
    - name: Start and enable MySQL service
      ansible.builtin.systemd:
        name: mysqld
        state: started
        enabled: true

    #创建快捷方式
    - name: Create symbolic link for MySQL binary
      ansible.builtin.file:
        src: /data/mysql8/mysql-8.0.30-linux-glibc2.12-x86_64/bin/mysql
        dest: /usr/local/bin/mysql
        state: link

    # 设置 root@% 用户和密码
    - name: Configure root@% user with password
      ansible.builtin.shell: |
        /data/mysql8/mysql-8.0.30-linux-glibc2.12-x86_64/bin/mysql -u root --socket=/tmp/mysql.sock -e "
          CREATE USER 'root'@'%' IDENTIFIED BY 'abc123';
          GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
          ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'abc123456';
          FLUSH PRIVILEGES;"
      args:
        executable: /bin/bash

    # 验证 root@% 用户是否创建成功
    - name: Verify root@% user configuration
      ansible.builtin.shell: |
        /data/mysql8/mysql-8.0.30-linux-glibc2.12-x86_64/bin/mysql -u root -pabc123456 --host=127.0.0.1 --port=3306 -e "SELECT User, Host FROM mysql.user;"
      register: mysql_user_check

    - name: Output MySQL user check results
      ansible.builtin.debug:
        msg: "{{ mysql_user_check.stdout }}"

ansible-playbook -i inventory mysql8.yml


------------------------------------------------
mysql8.0.22安装_优
网址:https://dev.mysql.com/downloads/
MySQL Community Server
Linux - Generic

1)重命名解压出来的文件夹,这里改成mysql
mv mysql-8.0.22 mysql

2)/data文件夹下创建data文件夹存储文件
mkdir /data/mysql_data

3)分别创建用户组以及用户和密码
groupadd mysql
useradd -g mysql mysql

4)授权刚刚新建的用户
chown -R mysql:mysql /data/mysql
chmod -R 750 /data/mysql_data

5)编辑my.cnf文件
vi /etc/my.cnf

[mysql]
default-character-set=utf8mb4
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
#port=3306
user=mysql
general_log=1
general_log_file=/data/mysql_data/mysql_general.log
socket=/tmp/mysql.sock
basedir=/data/mysql
datadir=/data/mysql_data
log-bin=/data/mysql_data/mysql-bin
innodb_data_home_dir=/data/mysql_data
innodb_log_group_home_dir=/data/mysql_data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
default_authentication_plugin=mysql_native_password
symbolic-links=0
#explicit_defaults_for_timestamp=true
[mysqld_safe]
log-error=/data/mysql_data/mysql.log
pid-file=/data/mysql_data/mysql.pid

6)切换到/data/mysql/bin目录下
cd /data/mysql/bin

7)初始化基础信息,得到数据库的初始密码(在/data/mysql/bin目录下执行)
./mysqld --user=mysql --basedir=/data/mysql --datadir=/data/mysql_data/ --initialize
复制出密码保存

8)复制mysql.server文件,在/data/mysql/目录下执行
cp ../support-files/mysql.server /etc/init.d/mysql
cp ../support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list

9)链接
ln -s /data/mysql/bin/mysql /usr/bin

10)启动数据库,有SUCCESS字眼说明MySQL安装完成
service mysql start

修改root默认密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'shimujiuxia';
修改localhost为所有地点登录
use mysql;
update user set host='%' where user='localhost';

创建用户
CREATE USER 'root'@'%' IDENTIFIED BY 'shimujiuxia';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'shimujiuxia';
赋权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
刷新权限
FLUSH PRIVILEGES;

删除用户
DROP USER 'example_user'@'localhost';
检查是否有残留权限
SELECT * FROM mysql.user WHERE user = 'example_user';
SELECT * FROM mysql.db WHERE user = 'example_user';
SELECT * FROM mysql.tables_priv WHERE user = 'example_user';
删除残留的权限记录(如果有)
DELETE FROM mysql.db WHERE user = 'example_user';
DELETE FROM mysql.tables_priv WHERE user = 'example_user';

创建用户
CREATE user 'root'@'%';
#修改密码
alter user 'root'@'%' identified with mysql_native_password by 'shimujiuxia';
创建新的数据库
create database db_name default character set utf8mb4 collate utf8mb4_unicode_ci;
把新的数据库授权给新用户
grant all privileges on db_name.* to "mysql"@"%";


------------------------------------------------
原文链接:https://baijiahao.baidu.com/s?id=1727961254233220796&wfr=spider&for=pc
(一)概述
MySQL中存在着以下几种日志:重写日志(redo log)、回滚日志(undo log)、二进制日志(bin log)、错误日志(error log)、慢查询日志(slow query log)、
一般查询日志(general log)。
MySQL中的数据变化会体现在上面这些日志中,比如事务操作会体现在redo log、undo log以及bin log中,数据的增删改查会体现在 binlog 中。本章是对MySQL日志文件
的概念及基本使用介绍,不涉及底层内容。针对开发人员而言,这几种日志中最有可能使用到的是慢查询日志。
(二)redo log
redo log是一种基于磁盘的数据结构,用来在MySQL宕机情况下将不完整的事务执行数据纠正,redo日志记录事务执行后的状态。
当事务开始后,redo log就开始产生,并且随着事务的执行不断写入redo log file中。redo log file中记录了xxx页做了xx修改的信息,我们都知道数据库的更新操作会
在内存中先执行,最后刷入磁盘。
redo log就是为了恢复更新了内存但是由于宕机等原因没有刷入磁盘中的那部分数据。
(三)undo log
undo log主要用来回滚到某一个版本,是一种逻辑日志。undo log记录的是修改之前的数据,比如:当delete一条记录时,undolog中会记录一条对应的insert记录,从而
保证能恢复到数据修改之前。在执行事务回滚的时候,就可以通过undo log中的记录内容并以此进行回滚。
undo log还可以提供多版本并发控制下的读取(MVCC)。
(四)bin log
MySQL的bin log日志是用来记录MySQL中增删改时的记录日志。简单来讲,就是当你的一条sql操作对数据库中的内容进行了更新,就会增加一条bin log日志。
查询操作不会记录到bin log中。bin log最大的用处就是进行主从复制,以及数据库的恢复。
通过下面的命令可以查看是否开启binlog日志
show VARIABLES like '%log_bin%'
开启binlog的方式如下:
log-bin=mysql-binserver-id=1binlog_format=ROW
其中log-bin指定日志文件的名称,默认会放到数据库目录下,可通过以下命令查看
show VARIABLES like '%datadir%'
(五)error log
error log主要记录MySQL在启动、关闭或者运行过程中的错误信息,在MySQL的配置文件my.cnf中,可以通过log-error=/var/log/mysqld.log 执行mysql错误日志的位置。
通过MySQL的命令
show variables like "%log_error%";
也可以获取到错误日志的位置。
(六)slow query log
慢查询日志用来记录执行时间超过指定阈值的SQL语句,慢查询日志往往用于优化生产环境的SQL语句。可以通过以下语句查看慢查询日志是否开启以及日志的位置:
show variables like "%slow_query%";
慢查询日志的常用配置参数如下:
slow_query_log=1 #是否开启慢查询日志,0关闭,1开启slow_query_log_file=/usr/local/mysql/mysql-8.0.20/data/slow-log.log #慢查询日志地址(5.6及以上版本)
long_query_time=1 #慢查询日志阈值,指超过阈值时间的SQL会被记录log_queries_not_using_indexes #表示未走索引的SQL也会被记录
分析慢查询日志一般会用专门的日志分析工具。找出慢SQL后可以通过explain关键字进行SQL分析,找出慢的原因。
(七)general log
general log 记录了客户端连接信息以及执行的SQL语句信息,通过MySQL的命令
show variables like '%general_log%';
可以查看general log是否开启以及日志的位置。
general log 可通过配置文件启动,配置参数如下:
general_log = ongeneral_log_file = /usr/local/mysql/mysql-8.0.20/data/hecs-78422.log
普通查询日志会记录增删改查的信息,因此一般是关闭的。


------------------------------------------------



0 篇评论

发表我的评论