mysql创建远程用户、mysql用户授权、mysql编码、mysql备份和mysql快捷登录

mysql和ubuntu版本Server version: 5.7.21-0ubuntu0.16.04.1 (Ubuntu)


#mysql用户创建和授权
## 1.使用root用户登录,查看数据库:
mysql> select Host,User from mysql.user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| localhost | debian-sys-maint |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)


## 2.使用指定编码创建远程数据库
CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
更改远程数据库指定编码
ALTER DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


## 3.创建远程数据库用户
CREATE user test IDENTIFIED BY 'lenovo111!';
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 rows in set (0.00 sec)
此时,使用新创建的用户只能够看见information_schema数据库。
mysql> select Host,User from mysql.user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| %         | test             |
| localhost | debian-sys-maint |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)


## 4.对新创建的用户分配权限
GRANT 权限 ON 数据库对象 TO 用户
GRANT ALL PRIVILEGES ON testdb.* TO 'test'@'%'IDENTIFIED BY 'lenovo111!' WITH GRANT OPTION;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON testdb.* TO 'test'@localhost IDENTIFIED BY 'lenovo111!';
GRANT SELECT ON testdb.* TO test@'192.168.0.%';
GRANT INSERT ON testdb.* TO test@'%';
GRANT UPDATE ON testdb.* TO test@'%';
GRANT DELETE ON testdb.* TO test@'%';
分配完后一定记得刷新mysql用户权限相关表;
FLUSH PRIVILEGES;
此时,再次刷新test用户的数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| testdb             |
+--------------------+
2 rows in set (0.00 sec)
如果此时还是连不上,提示access deny等,需要修改配置文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address            = 127.0.0.1#mysql默认绑定了本地ip,不接受其他来源
将bind-address = 127.0.0.1注释掉即可


## 5.修改用户密码
SET PASSWORD FOR testdb@localhost = OLD_PASSWORD('lenovo111!');
update mysql.user set password=password('新密码') where User="test" and Host="localhost";




## 6.删除用户
查询
mysql> select Host,User from mysql.user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| %         | test             |
| localhost | debian-sys-maint |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)
删除和刷新
mysql> DROP user 'test'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
查询
mysql> select Host,User from mysql.user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| %         | test             |
| localhost | debian-sys-maint |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)








# mysql编码
## 1.mysql几种编码的区别:
mysql编码utf8_unicode_ci、utf8_general_cs和utf8_bin的区别:
utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容。


mysql编码utf8_unicode_ci、utf8_general_ci的区别:
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。
如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了,到现在也没发现问题


## 2.旧数据编码升级办法
old_table (default charset=latin1)
new_table(default charset=utf8)
1)导出旧数据
mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql
2)转换编码(假定old.sql默认时gb312)
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
或让iconv自动判断原来的字符集
iconv -t utf-8 -c old.sql > new.sql
3)导入
修改old.sql,在插入/更新语句开始之前,增加一条sql语句: "SET NAMES utf8;",保存。
mysql -hlocalhost -uroot my_db < new.sql








# mysql备份
1.导出整个数据库
导出文件默认是存在mysql\bin目录下
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name >  outfile_name.sql
3.导出一个数据库结构
mysqldump -u user_name -p -d --add-drop-table database_name >  outfile_name.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.带语言参数导出
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk  --skip-opt database_name > outfile_name.sql












# mysql快捷登录
* 使用mysql快捷登录可以提高一定安全性
* login-path时mysql5.6开始支持的
* mysql_config_editor工具会将登录的相关信息加密并保存再.mylogin.cnf文件(默认位于用户主目录)
* mysql读取该加密文件连接MySQL
## 1.设置
使用test用户登录本地
lenovo@lenovo-ThinkPad:~$ mysql_config_editor set --login-path=lenovo --user=test --password
Enter password: 
lenovo@lenovo-ThinkPad:
其中可配置项
-h,–host=name 添加host到登陆文件中
-G,–login-path=name 在登录文件中为login path添加名字(默认为client)
-p,–password 在登陆文件中添加密码(该密码会被mysql_config_editor自动加密)
-u,–user 添加用户名到登陆文件中
-S,–socket=name 添加sock文件路径到登陆文件中
-P,–port=name 添加登陆端口到登陆文件中
再次设置同样的login-path(登录到127.0.0.1上的数据库),会提示是否覆盖
mysql_config_editor set --login-path=lenovo --user=test --password -h 127.0.0.1
Enter password: 
WARNING : 'lenovo' path already exists and will be overwritten. 
 Continue? (Press y|Y for Yes, any other key for No) : yes
## 2.查看
查看login-path位lenovo的配置信息
lenovo@lenovo-ThinkPad:~$ mysql_config_editor print --login-path=lenovo
[lenovo]
user = test
password = *****
查看所有的配置信息
lenovo@lenovo-ThinkPad:~$ mysql_config_editor print --all
[lenovo]
user = test
password = *****
host = 127.0.0.1
## 3.登录
lenovo@lenovo-ThinkPad:~$ mysql --login-path=lenovo
Welcome to the MySQL monitor.  Commands end with ; or \g.
## 4.删除
mysql_config_editor remove --login-path=lenovo


参考:
https://dev.mysql.com/doc/refman/5.7/en/mysql-config-editor.html




























  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值