linux下的mysql 使用 我是JDBC连接数据库,开始碰到中文乱码,然后我设置连接的url 设置为
jdbc:mysql://ip:端口号/test?useUnicode=true&characterEncoding=utf8,乱码即可消失
假设我的数据库是GBK的编码方式(其实就是UTF8编码方式)
1. 存数据时:
数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
2.取数据时:
在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。
注意:在xml配置文件中配置数据库utl时,要使用&的转义字符也就是&
例如:<property name="url" value="jdbc:mysql://ip:端口号/test?useUnicode=true&characterEncoding=utf8" />
设置mysql的数据库,用户,用户授权,执行代码。我是在命令行执行的:
1.用具有root权限的账号登陆(我是用linux客户端 pieTTY登陆linux后操作本地mysql)
跳到mysql的bin目录 输入 mysql -u 用户名 -p
敲入密码
2.我想创建一个新用户执行了 create user 'testdb'@'LOCALHOST' IDENTIFIED BY'testdb'; 失败了,于是我执行了
3. show grants for xiawan 查看我这个用户的权限,显示远程的权限是root权限
(GRANT ALL PRIVILEGES ON *.* TO 'xx'@'%'IDENTIFIED BY PASSWORD '*0C842E935A6A98C0D591DA7ECB85E4478E388681'), 执行show grants forxiawan@'LOCALHOST';查看我这个用户的本地的权限,显示本地的权限
(GRANTUSAGE ON *.* TO 'xx'@'localhost' IDENTIFIEDBY PASSWORD '*0C842E935A6A98C0D591DA7ECB85E4478E388681')
说明本地权限是部分权限,而远程权限是root权限
4.我用windows 的dos窗口,连接远程的xx用户(1) 调到自己windows的mysql的bin目录执行 mysql -hip -u xiawan -p
(2)create user 'xiaoxiao'@'%' identified by'xiaoxiao'; 成功了
【这里 window 中的 dir 直接回车,查看当前目录中所有一级文件夹,cd 直接回车 能看当前目录】
5.我执行SELECT USER();查看当前用户,正确是自己的用户,有执行 SELECTuser,host,password FROM mysql.user;查看所有的用户,发现有刚才创建的用户xiaoxiao
6.show databases;查询所有的数据库名
drop database testdb;删除数据库testdb
create database testdb;创建数据库表testdb(均执行成功了)
7.【前面都是扯淡来了,我本以为我的之前的账号是root权限的,但是我再次查询的时候,发现我的用户是没有授权权限的,所
以我还是不得已等上了root权限,是有grant权限的root权限】
执行了一句 GRANT ALL PRIVILEGESON *.* TO 'xiaoxiao'@'远程ip' IDENTIFIED BY 'xiaoxiao' WITH GRANT OPTION;
flush privileges;
8.此时 GRANTALL PRIVILEGES ON testdb.* toxiaoxiao@'ip' identified by 'xiaoxiao';
再执行 flushprivileges;
【前面都是扯淡来了】
9.前面都是做了一些预热的东西,最后我执行了 grantall PRIVILEGES on *.* to xiaoxiao@'%' identified by 'xiaoxiao'; 而后flush
privileges;才真正给xiaoxiao这个用户授权了!!!!!!!!【记得是@'%'】此刻xiaoxiao用户拥有和root一样的权限了。
这个也可以 grant all privileges on *.* toxiaoxiao@'ip' identified by 'xiaoxiao';
10.现在总算明白了,什么是给数据库用户授权【grant all PRIVILEGES on *.* to xiaoxiao@'%' identified by'xiaoxiao'; 】,什么是给某用户授权某数据库以某权限【GRANTALL PRIVILEGES ON testdb.* to xiaoxiao@'ip' identified by'xiaoxiao';】