mysql笔记

192 阅读5分钟

【1】linux安装mysql
【2】查看数据库编码
【3】创建数据库时设置编码
【4】账户授权设置
【5】数据库编码格式
【6】mysql、mysqldump导出与导入sql文件
【7】CenterOS7中解决No package mysql-server available

推荐一个小程序:云来米,输入:KESS4HK提供技术支持关于云计算及服务器反佣服务

【1】linux安装mysql

#查看该操作系统上是否已经安装了mysql数据库
rpm -qa | grep mysql
#普通删除模式
rpm -e mysql  
#强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
rpm -e --nodeps mysql
#通过yum来进行mysql的安装
yum list | grep mysql
yum install -y mysql-server mysql mysql-devel
#查看刚安装好的mysql-server的版本
rpm -qi mysql-server
#mysql数据库的初始化及相关配置(第一次启动时会初始化信息 service mysqld start)
mysqladmin -u root password 'root'  #通过该命令给root账号设置密码为 root
#查看mysql服务是不是开机自动启动
chkconfig --list | grep mysqld?
#开机启动
chkconfig mysqld on?
#mysql的主配置文件
cat /etc/my.cnf?
#mysql数据库的数据库文件默认存放位置
/var/lib/mysql??
#mysql数据库的日志输出默认存放位置
tail -f /var/log/mysqld.log?
推荐一个小程序:云来米,输入:KESS4HK提供技术支持关于云计算及服务器反佣服务

【2】查看数据库编码
show variables like ‘character%’;

推荐一个小程序:云来米,输入:KESS4HK提供技术支持关于云计算及服务器反佣服务

【3】创建数据库时设置编码

CREATE DATABASE `correct` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci 

【4】账户授权设置

#============= MySQL5.0 
#创建用户
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%'; 
#授权命令:(GRANT privileges ON databasename.tablename TO 'username'@'host')
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%'; 
#设置与更改用户密码 (SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword"); )
SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456"); 
flush privileges;
#撤销用户权限 (REVOKE privilege ON databasename.tablename FROM 'username'@'host';)
REVOKE SELECT ON *.* FROM 'pig'@'%'; (注意: 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select 权限. )
#删除用户(DROP USER 'username'@'host';)
#root密码丢失,恢复root密码
	service mysqld stop
	#跳过mysql权限后台启动
	/usr/bin/mysqld_safe --user=mysql --skip-grant-tables &
	#修改密码后再以正常方式启动

#============= MySQL 5.7 用户密码修改
use mysql;
update user set authentication_string=password('新密码') where user='root' and Host='localhost';
flush privileges;
#============= MySQL5.5 用户密码修改
USE mysql;
SELECT * FROM USER;
UPDATE  USER  SET  PASSWORD=PASSWORD('你的密码')   WHERE USER='root';
GRANT  SELECT  ON  test.employee  TO  'eric'@'localhost'  IDENTIFIED  BY  '123456';

【5】数据库编码格式

###查看编码格式
show variables like 'character%';
    character_set_client	utf8		#客户端使用的编码,如GBK, UTF8 比如你写的sql语句是什么编码的。
    character_set_connection	utf8	#连接使用的编码
    character_set_database	utf8
    character_set_filesystem	binary
    character_set_results	utf8		#查询返回的结果集的编码(从数据库读取的数据是什么编码的)。
    character_set_server	utf8mb4
    character_set_system	utf8
    character_sets_dir	/usr/share/mysql/charsets/ 
#当查询进入时,查询会被服务器从 character_set_client转换到character_set_connection,当查询执行时,查询会被服务器从 character_set_connection转换到列字符集。
#查询反回时,数据直接被服务器从列字符集转换到 character_set_results。

###修改编码格式
    character_set_client、character_set_connection、character_set_results这3个参数值是由客户端每次连接进来设置的,和服务器端没关系。登陆进mysql后,执行 set names utf8; 实际就是同时修改上面的这3个参数值的。
    SET character_set_results=utf8; #临时修改,重启失效
    #永久修改 /etc/mysql/mysql.conf.d/mysqld.cnf
        [client]
        default-character-set = utf8
        [mysql]
        default-character-set = utf8
        [mysqld]
        character-set-server = utf8
        init-connect='set names utf8'

【6】mysql、mysqldump导出与导入sql文件

###导出
#备份命令
    mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql 
#备份同时压缩
    mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 | gzip > 文件名.sql.gz
#备份同个库多个表
    mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 表12 .... > 文件名.sql 
#同时备份多个库
    mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名1 数据库名2 数据库名3 > 文件名.sql 
#备份实例上所有的数据库
    mysqldump -h主机名 -P端口 -u用户名 -p密码 --all-databases > 文件名.sql 
#备份数据出带删除数据库或者表的sql备份
    mysqldump -h主机名 -P端口 -u用户名 -p密码 --add-drop-table --add-drop-database 数据库名 > 文件名.sql 
#备份数据库结构,不备份数据
    mysqldump -h主机名 -P端口 -u用户名 -p密码 --no-data 数据库名1 数据库名2 数据库名3 > 文件名.sql 
#备份特定数据库中特定表的表格结构和满足特定条件的数据
    mysqldump -h主机名 -P端口 -u用户名 -p密码 数据库名 表1 --where=" ctime>'2017-01-01' and ctime<'2017-06-30'" > 文件名.sql 

###导入
#系统命令行导入
     mysql -h主机名 -P端口 -u用户名 -p密码 数据库名 < 文件名.sql
#mysql命令行导入
    mysql>
        user db1;
        source tb1_tb2.sql;
#恢复整个数据库的方法:
    mysql -h主机名 -P端口 -u用户名 -p密码   < all_database.sql

【7】CenterOS7中解决No package mysql-server available

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server