MySQL笔记小结

一、查询是否有旧版本

  • CentOS6:rpm -qa | grep mysql。对应卸载命令:rpm -e --nodeps  mysql-libs
  • CentOS7:rpm -qa|grep mariadb。对应卸载命令:rpm -e --nodeps  mariadb-libs
  • 查看当前版本:mysqladmin --version

二、检查 /tmp 权限

        是否是最大,若不是,则执行:chmod -R 777 /tmp。由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限。

三、安装(具体根据下载的版本来)在mysql的安装文件目录下执行:  

  • rpm -ivh MySQL-client-5.5.54-1.linux2.6.x86_64.rpm
  • rpm -ivh MySQL-server-5.5.54-1.linux2.6.x86_64.rpm
  • 安装完成启动sql后登陆前先设置密码:/usr/bin/mysqladmin -u root  password '123123'
  • 登陆:mysql -uroot -p123123
  • linux下查看安装目录:ps -ef|grep mysql

四、启动、停止、重启

  • service mysql start
  • service mysql stop
  • service mysql restart
  • 自启动查询:chkconfig --list|grep mysql

五、字符集及乱码问题解决

  • 查看字符集:show variables like 'character%'; 或 show variables like '%char%';
  • 查看原库的字符集:show create database mydb

   修改乱码:

  • 找到my-huge.cnf:cd /usr/share/mysql/
  • 拷贝其中的my-huge.cnf 到 /etc/  并命名为my.cnf:cp my-huge.cnf  /etc 
  • 修改 my.cnf :vim my.cnf 然后在相应的位置添加:[client]default-character-set=utf8 [mysqld] character_set_server=utf8 character_set_client=utf8 collation-server=utf8_general_ci [mysql] default-character-set=utf8

修改数据库的字符集:mysql> alter database mydb character set 'utf8';
修改数据表的字符集:mysql> alter table mytbl convert to  character set 'utf8';

但是原有的数据如果是用非'utf8'编码的话,数据本身不会发生改变。

六、创建用户

  • 创建用户:create user zhang3 identified by '123123';
  • 查看用户:select host,user,password,select_priv,insert_priv,drop_priv from mysql.user;
  • 修改当前用户的密码:set password =password('123456')
  • 修改某个用户的密码:update mysql.user set password=password('123456') where user='li4';
  • flush privileges;   #所有通过user表的修改,必须用该命令才能生效。
  •  修改用户名:update mysql.user set user='li4' where user='wang5';
  • 删除用户:drop user li4。不要通过delete from  user u where user='li4' 进行删除,系统会有残留信息保留。 

七、授权

  • 授权命令:grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;该权限如果发现没有该用户,则会直接新建一个用户。比如  
    grant select,insert,delete,drop on atguigudb.* to li4@localhost  ;
     #给li4用户用本地命令行方式下,授予atguigudb这个库下的所有表的插删改查的权限。
  • grant all privileges on *.* to root@'%'  identified by '123'; 
    #授予通过网络方式登录的的joe用户 ,对所有库所有表的全部权限,密码设为123.
  • 查看当前用户权限:show grants;
  • 查看某用户的全局权限:select  * from user ;
  • 查看某用户的某个表的权限:select * from tables_priv;
  • 收回权限命令:revoke  权限1,权限2,…权限n on 数据库名称.表名称  from  用户名@用户地址 ;
  • 收回全库全表的所有权限:REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost;
  • 收回mysql库下的所有表的插删改查权限:REVOKE select,insert,update,delete ON mysql.* FROM joe@localhost;
  • 必须用户重新登录后才能生效

其他

  • GBK一个汉字占两个字符,UTF-8占三个
  • 更新数据库:update lpytable set name='张三' where id=1;
  • 查看数据库下用户权限:select * from user\G;
  • 查询数据库用户列表:select host,user,password from user;
  • sql_mode配置:不配置,则默认允许非法查询,导致查询结果错误。
  • 查询sql_mode值:show  variables like 'sql_mode';
  • 设置sql_mode常用值如下:set sql_mode='ONLY_FULL_GROUP_BY';

MyISAM 和 InnoDB 的区别

  1. 外键:MyISAM 不支持,InnoDB 支持;
  2. 事务:MyISAM 不支持,InnoDB 支持;
  3. 行表锁:MyISAM 是表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作;InnoDB 是行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作;
  4. 缓存:MyISAM 只缓存索引,不缓存真实数据;InnoDB 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响;
  5. 关注点:MyISAM 节省资源、消耗少、简单业务;InnoDB 并发写、事务、更大资源;
  6. 都默认安装,MyISAM 默认不使用,InnoDB 默认使用;
  7. MyISAM 系统自带表使用,InnoDB 系统自带表不使用;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值