• mysql之一:系统准备及安装


    第一章 什么是Mysql

    MyQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

    第二章 操作系统优化

    1. 内存准备

    2. 内核准备

    3. 网卡准备

    4. 硬盘准备

    第三章 安装Mysql

    1、安装前知识准备

    用户名:mysql
    安装目录:/usr/local/mysql-5.5
    数据库目录:/data/mysql/data
    源码包:mysql-5.5.60.tar.gz

    2、安装准备

    官网下载地址

    #1. 下载源码包 [http://mirrors.sohu.com/mysql/](http://mirrors.sohu.com/mysql/)
    wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.60.tar.gz
    #2. 安装编译所需文件或程序
    yum install gcc gcc-c++ cmake ncurses-devel bison git
    #3. 添加用户
    useradd -s /sbin/nologin mysql
    #4. 建立所需目录
    mkdir -p /data/mysql/data && chown -R mysql:mysql /data/mysql
    

    3 、编译安装配置

    cd
    tar xzvf mysql-5.5.60.tar.gz 
    cd mysql-5.5.60
    
    cmake 
    -DMYSQL_USER=mysql 
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
    -DINSTALL_DATADIR=/data/mysql/data 
    -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock 
    -DDEFAULT_CHARSET=utf8 
    -DDEFAULT_COLLATION=utf8_general_ci 
    -DEXTRA_CHARSETS=all 
    -DWITH_EMBEDDED_SERVER=1 
    -DENABLED_LOCAL_INFILE=1 
    -DWITH_MYISAM_STORAGE_ENGINE=1 
    -DWITH_INNOBASE_STORAGE_ENGINE=1
    

    注:如果此处编译错误,请先解决错误,然后再重新解压缩mysql包,再进入解压后的mysql执行上次 的操作

    参数说明:

    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录
    -DMYSQL_DATADIR=/usr/local/mysql/data //数据库存放目录

    配置mysql引擎

    -DWITH_MYISAM_STORAGE_ENGINE=1 //安装myisam存储引擎
    -DWITH_INNOBASE_STORAGE_ENGINE=1 //安装innodb存储引擎
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 //安装archive存储引擎
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 //安装blackhole存储引擎
    -DENABLED_LOCAL_INFILE=1 //允许从本地导入数据

    配置字符集

    -DDEFAULT_CHARSET=utf8   //使用utf8字符
    -DDEFAULT_COLLATION=utf8_general_ci //校验字符
    -DEXTRA_CHARSETS=all   //安装所有扩展字符集

    配置端口号

    -DMYSQL_TCP_PORT=3306 //MySQL监听端口

    配置用户名

    -DMYSQL_USER=mysql //MySQL用户名

    其他参数:

    -DWITH-EMBEDDED_SERVER=1 //编译成embedded MySQL library (libmysqld.a)
    -DSYSCONFDIR=/etc //MySQL配辑文件
    -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock //Unix socket 文件路径
    -DWITH_READLINE=1 //快捷键功能
    -DWITH_SSL=yes //SSL

    mysql扩展引擎安装

    -DWITH_MEMORY_STORAGE_ENGINE=1 //安装memory存储引擎
    -DWITH_FEDERATED_STORAGE_ENGINE=1 //安装frderated存储引擎
    -DWITH_PARTITION_STORAGE_ENGINE=1 //安装数据库分区

    mysql插件安装以及路径配置

    -DINSTALL_PLUGINDIR=/usr/local/mysql/plugin //插件文件及配置路径

    注:CMAKE 配置参考 常规参数介绍

    4. 编译安装

    make && make install
    chown -R mysql:mysql /usr/local/mysql5.5/
    
    /** 设置mysql配置文件 **/
    mv /root/mysql-5.5.60/support-files/my-large.cnf /etc/my.cnf
    
    /** 设置mysql启动路径 **/
    mv /root/mysql-5.5.60/support-files/mysql.server /etc/init.d/mysqld
    
    /** 修改启动命令权限 **/
    chmod a+x /etc/init.d/mysqld
    
    /** 开机启动 **/
    chkconfig --level 345 mysqld on
    
    /**设置环境变量 **/
    echo "export PATH=/usr/local/mysql5.5/bin/:$PATH" >> /etc/profile
    
    /** 重新加载环境变量文件 **/
    source /etc/profile
    
    /** 设置mysql相关配置 **/
    /usr/local/mysql5.5/scripts/mysql_install_db 
    --user=mysql 
    --defaults-file=/etc/my.cnf 
    –-basedir=/usr/local/mysql5.5 
    --datadir=/data/mysql/data
    

    5. 修改mysql配置文件

    vim /etc/my.cnf
    
    /** 文件末尾添加 **/
    basedir=/usr/local/mysql5.5
    datadir=/data/mysql/data
    

    6. 创建mysql管理员

    /usr/bin/mysqladmin -u root password 'z'
    

    3.7 启动与关闭MySQL

    mysqld_safe&                启动mysql
    mysqladmin -u root shutdown 关闭mysql
    mysqlshow                   显示mysql中的数据库列表
    mysqladmin ping             显示mysql是否正在工作
    mysqladmin version          显示mysql的版本
    

    8. 连接数据库:

    mysql -u root -p  -P port
    

    9. 权限修改

    grant ALL on *.* to root@"%" identified by "";
    

    10 用户和权限管理

    -- root密码重置
    1. 停止MySQL服务
    2.  [Linux] /usr/local/mysql/bin/safe_mysqld --skip-grant-tables &
        [Windows] mysqld --skip-grant-tables
    3. use mysql;
    4. UPDATE `user` SET PASSWORD=PASSWORD("密码") WHERE `user` = "root";
    5. FLUSH PRIVILEGES;
    用户信息表:mysql.user
    -- 刷新权限
    FLUSH PRIVILEGES;
    -- 增加用户
    CREATE USER 用户名 IDENTIFIED BY [PASSWORD] 密码(字符串)
        - 必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。
        - 只能创建用户,不能赋予权限。
        - 用户名,注意引号:如 'user_name'@'192.168.1.1'
        - 密码也需引号,纯数字密码也要加引号
        - 要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD
    -- 重命名用户
    RENAME USER old_user TO new_user
    -- 设置密码
    SET PASSWORD = PASSWORD('密码')  -- 为当前用户设置密码
    SET PASSWORD FOR 用户名 = PASSWORD('密码') -- 为指定用户设置密码
    -- 删除用户
    DROP USER 用户名
    -- 分配权限/添加用户
    GRANT 权限列表 ON 表名 TO 用户名 [IDENTIFIED BY [PASSWORD] 'password']
        - all privileges 表示所有权限
        - *.* 表示所有库的所有表
        - 库名.表名 表示某库下面的某表
        GRANT ALL PRIVILEGES ON `pms`.* TO 'pms'@'%' IDENTIFIED BY 'pms0817';
    -- 查看权限
    SHOW GRANTS FOR 用户名
        -- 查看当前用户权限
        SHOW GRANTS; 或 SHOW GRANTS FOR CURRENT_USER; 或 SHOW GRANTS FOR CURRENT_USER();
    -- 撤消权限
    REVOKE 权限列表 ON 表名 FROM 用户名
    REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户名   -- 撤销所有权限
    -- 权限层级
    -- 要使用GRANT或REVOKE,您必须拥有GRANT OPTION权限,并且您必须用于您正在授予或撤销的权限。
    全局层级:全局权限适用于一个给定服务器中的所有数据库,mysql.user
        GRANT ALL ON *.*和 REVOKE ALL ON *.*只授予和撤销全局权限。
    数据库层级:数据库权限适用于一个给定数据库中的所有目标,mysql.db, mysql.host
        GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。
    表层级:表权限适用于一个给定表中的所有列,mysql.talbes_priv
        GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。
    列层级:列权限适用于一个给定表中的单一列,mysql.columns_priv
        当使用REVOKE时,您必须指定与被授权列相同的列。
    -- 权限列表
    ALL [PRIVILEGES]    -- 设置除GRANT OPTION之外的所有简单权限
    ALTER   -- 允许使用ALTER TABLE
    ALTER ROUTINE   -- 更改或取消已存储的子程序
    CREATE  -- 允许使用CREATE TABLE
    CREATE ROUTINE  -- 创建已存储的子程序
    CREATE TEMPORARY TABLES     -- 允许使用CREATE TEMPORARY TABLE
    CREATE USER     -- 允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。
    CREATE VIEW     -- 允许使用CREATE VIEW
    DELETE  -- 允许使用DELETE
    DROP    -- 允许使用DROP TABLE
    EXECUTE     -- 允许用户运行已存储的子程序
    FILE    -- 允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE
    INDEX   -- 允许使用CREATE INDEX和DROP INDEX
    INSERT  -- 允许使用INSERT
    LOCK TABLES     -- 允许对您拥有SELECT权限的表使用LOCK TABLES
    PROCESS     -- 允许使用SHOW FULL PROCESSLIST
    REFERENCES  -- 未被实施
    RELOAD  -- 允许使用FLUSH
    REPLICATION CLIENT  -- 允许用户询问从属服务器或主服务器的地址
    REPLICATION SLAVE   -- 用于复制型从属服务器(从主服务器中读取二进制日志事件)
    SELECT  -- 允许使用SELECT
    SHOW DATABASES  -- 显示所有数据库
    SHOW VIEW   -- 允许使用SHOW CREATE VIEW
    SHUTDOWN    -- 允许使用mysqladmin shutdown
    SUPER   -- 允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。
    UPDATE  -- 允许使用UPDATE
    USAGE   -- “无权限”的同义词
    GRANT OPTION    -- 允许授予权限
    

    3.10 备份与还原

    3.10.1 导出

    mysqldump -uroot -p manager > c:/manager.sql  #注意:最后不要加任何东西
    
    

    – 导出
    mysqldump [options] db_name [tables]
    mysqldump [options] —database DB1 [DB2 DB3…]
    mysqldump [options] --all–database

    1. 导出一张表
      mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)
    2. 导出多张表
      mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 文件名(D:/a.sql)
    3. 导出所有表
      mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)
    4. 导出一个库
      mysqldump -u用户名 -p密码 --lock-all-tables --database 库名 > 文件名(D:/a.sql)
      可以-w携带WHERE条件

    3.10.2 导入

    #在不登录的情况下
    mysql -uroot -p dbname < c:/manager.sql       #恢复时,先创建database,再用此命令。注意:最后不要加任何东西
    
    #在登录mysql的情况下
    source  备份文件
    
    

    3.10.3 csv格式文件的批量数据导入与导出

    #导出
    select * from tableName into outfile 文件地址 [控制格式];
    
    select * from tableName into outfile '/tmp/tt.csv' fields terminated by ','  ENCLOSED BY '' LINES TERMINATED BY '/n'; #这是以csv格式导出数据,字段分隔是一个制表符
    #导入
    load data [local] infile 文件地址 [replace|ignore] into table 表名 [控制格式];
    #生成的数据默认的分隔符是制表符,local未指定,则数据文件必须在服务器上,replace 和 ignore 关键词控制对现有的唯一键记录的重复的处理
    
    load data infile '/tmp/tt.csv' into table tableName fields terminated by ',';#这是csv格式数据的导入,注意,如果从excle中另存为csv格式,默认是以",分隔的。
    

    – 控制格式
    fields 控制字段格式
    默认:fields terminated by ’ ’ enclosed by ‘’ escaped by ‘’
    terminated by ‘string’ – 终止
    enclosed by ‘char’ – 包裹
    escaped by ‘char’ – 转义
    – 示例:
    SELECT a,b,a+b INTO OUTFILE ‘/tmp/result.text’
    FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘"’
    LINES TERMINATED BY ’

    FROM test_table;
    lines 控制行格式
    默认:lines terminated by ’
    terminated by ‘string’ – 终止

    3.10.4 insert

    select * into target_table from source_table;
        #要求目标表target_table不存在,因为在插入时会自动创建
    (2)insert into target_table(column1,column2) select column1,5 from source_table;
    #要求目标表target_table存在,由于目标表已经存在,所以我们除了插入源表source_table的字段外,还可以插入常量
    
  • 相关阅读:
    ImageView宽度铺满高度自适应
    Android更改文字选中后左侧水滴及文字背景色
    Android gradle移除依赖包中某个子包
    kotlin中使用Gson字符串转数组
    Android控件设置透明度的三种方法
    在存储过程中生成SQL语句
    员工离职前的信号灯
    Win8中使用本地用户开启metro应用
    html+CSS的初步实现
    at least one pool section must be specified in config file
  • 原文地址:https://www.cnblogs.com/daozhangblog/p/12446455.html
Copyright © 2020-2023  润新知