到了第三节课,就遇到了一些问题了
自己貌似没有解决掉,明天早上去单位请教欢哥吧,
问题是,我本机起的tomcat服务 localhost和127.0.0.1可以但是ip的时候不可以
0.夜神等第三方android模拟器是不能访问localhost的
1.SharePreUtil的使用
2.gsonframe
3.okhttp封装
4.loginActivity的实现
0.夜神等第三方android模拟器是不能访问localhost的
自己吧代码写好了,因为是本地的tomcat不知道什么原因,只能访问127不能访问ip,我就把代码里的ip,写成了localhost,但是不知道为什么,模拟器还是访问不了服务器,直接显示网络请求就进入onFailed 的方法中了
网上查了下,发现夜神模拟器访问不是走localhost的, 感觉这就和上传发现小米不走adbshell一样,是自己没有那么多经验和牢固的基础知识所造成浪费时间
1.SharePreUtil的使用
/**
* Shared工具类
*/
public class SharePreUtil {
/**
* @param context 上下文
* @param keyname 存储数据的key
* @param value 存储数据的value
* @description shared保存int型数据
*/
public static void SetShareInt(Context context,String keyname,int value){
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(context);
sp.edit().putInt(keyname, value).commit();
}
/**
* @param context 上下文
* @param keyname 存储数据的key
* @description shared获取int型数据
*/
public static int GetShareInt(Context context,String keyname){
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(context);
int value = sp.getInt(keyname, -1);
return value;
}
/**
* @param context 上下文
* @param keyname 存储数据的key
* @param value 存储数据的value
* @description shared保存String类型数据
*/
public static void SetShareString(Context context,String keyname,String value){
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(context);
sp.edit().putString(keyname, value).commit();
}
/**
* @param context 上下文
* @param keyname 存储数据的key
* @description shared获取String类型数据
*/
public static String GetShareString(Context context,String keyname){
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(context);
String value = sp.getString(keyname, "");
return value;
}
/**
* @param context 上下文
* @param keyname 存储数据的key
* @description shared获取boolean类型数据
*/
public static boolean GetShareBoolean(Context context,String keyname){
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(context);
boolean value = sp.getBoolean(keyname, false);
return value;
}
/**
* @param context 上下文
* @param keyname 存储数据的key
* @param value 存储数据的value
* @description shared保存boolean类型数据
*/
public static void SetShareBoolean(Context context,String keyname,boolean value){
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(context);
sp.edit().putBoolean(keyname, value).commit();
}
}
使用起来应该很简单,就不赘述了
eg.
SharePreUtil.SetShareString(mContext, "userid", loginBeanResult.getBody().getUserid());
2.gsonframe
使用方法
http://blog.csdn.net/qq_33413264/article/details/77145971
3.okhttp封装
/**
* 网络请求管理
* 对OkHttp请求进行封装
*/
public class OkHttpManager {
private static OkHttpManager instance;
private OkHttpClient mOkHttpClient;
private Handler okHandler;
private OkHttpManager() {
//声明Handler对象,指定为主线程Looper,确保执行方法在主线程中
okHandler = new Handler(Looper.getMainLooper());
//指定超时时间等参数
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.connectTimeout(15, TimeUnit.SECONDS)
.writeTimeout(20, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS);
mOkHttpClient = builder.build();
}
/**
* 获取当前实例对象,确保唯一
* @return
*/
public static OkHttpManager getInstance() {
if (instance == null) {
synchronized (OkHttpManager.class) {
if (instance == null) {
instance = new OkHttpManager();
}
}
}
return instance;
}
/**
* get请求
*
* @param url
* @param resultCallback
*/
public void getNet(String url, ResultCallback resultCallback) {
Request request = new Request.Builder()
.url(url)//url 接口地址
.method("GET", null)//此设置默认为get,可以不设置
.build();
dealNet(request, resultCallback);
}
/**
* post请求
*
* @param url
* @param resultCallback
* @param param 传入参数,数量不定
*/
public void postNet(String url, ResultCallback resultCallback, Param... param) {
if (param == null) {
param = new Param[0];
}
FormBody.Builder formBody = new FormBody.Builder();
for (Param p : param) {
formBody.add(p.key, p.value);
}
RequestBody requestBody = formBody.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)//传入构建好的参数
.build();
dealNet(request, resultCallback);
}
/**
* 发送网络请求
* @param request
* @param resultCallback 自己定义的监听回调
*/
private void dealNet(final Request request, final ResultCallback resultCallback) {
mOkHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
okHandler.post(new Runnable() {
@Override
public void run() {
//失败时执行的方法
resultCallback.onFailed(request, e);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String str = "";
try {
str = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
final String finalStr = str;
Log.i("OkHttpManager", "onResponse: " + finalStr);
okHandler.post(new Runnable() {
@Override
public void run() {
//成功时执行的方法
resultCallback.onSuccess(finalStr);
}
});
}
});
}
public static abstract class ResultCallback {
public abstract void onFailed(Request request, IOException e);
public abstract void onSuccess(String response);
}
/**
* 参数封装类
*/
public static class Param {
String key;
String value;
public Param() {
}
public Param(String key, String value) {
this.key = key;
this.value = value;
}
}
}
单例模式的封装,但是感觉不是很好的造轮子,如果用的话还可以改下
4.loginActivity的实现
public class LoginActivity extends AppCompatActivity {
private EditText mEtName;
private EditText mEtPassword;
private TextInputLayout mEtName_design;
private TextInputLayout mEtPassword_design;
private Button mBtnLogin;
private String mUserName;
private String mPassWord;
private RelativeLayout mRelLoading;
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//判断是否已经登录,如果登陆过直接进去主界面
if (checkLogin()) {
startActivity(new Intent(LoginActivity.this, MainActivity.class));
finish();
} else {
//没有登录,留在登录界面
initStatusBarColor();
bindViews();
initListener();
}
}
/**
* 初始化监听器
*/
private void initListener() {
mBtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
login();
}
});
}
/**
* 登录
*/
private void login() {
if (checkData()) {
mRelLoading.setVisibility(View.VISIBLE);
//发送登录请求(POST方式)
OkHttpManager.getInstance().postNet(Constant.Login, new OkHttpManager.ResultCallback() {
// OkHttpManager.getInstance().postNet(Constant.service_url, new OkHttpManager.ResultCallback() {
@Override
public void onFailed(Request request, IOException e) {
//登录失败,去掉加载界面,提示错误信息
mRelLoading.setVisibility(View.GONE);
Log.i("errLog",request.toString());
Toast.makeText(getApplicationContext(), "服务连接异常,登录失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess(String response) {
Log.i("TAGshop",response);
//解析服务端返回数据为java对象
LoginBeanResult loginBeanResult = getDataFromJson(response);
mRelLoading.setVisibility(View.GONE);
if (loginBeanResult.getCode() == 0) {
//用户存在,密码正确,登录成功,先保存登录信息,然后跳转至主界面
SharePreUtil.SetShareString(mContext, "userid", loginBeanResult.getBody().getUserid());
//先清除数据库
DataSupport.deleteAll(User.class);
User user = new User();
user.setUserId(loginBeanResult.getBody().getUserid());
user.setNickName(loginBeanResult.getBody().getNickname());
user.setSex(loginBeanResult.getBody().getSex());
user.setJob(loginBeanResult.getBody().getJob());
user.setArea(loginBeanResult.getBody().getArea());
user.setPhoneNum(loginBeanResult.getBody().getPhonenum());
user.setImg(loginBeanResult.getBody().getImg());
//保存数据到数据库中
user.save();
startActivity(new Intent(LoginActivity.this, MainActivity.class));
finish();
} else {
Toast.makeText(getApplicationContext(), "用户名或密码错误,登录失败", Toast.LENGTH_SHORT).show();
}
}
// }, new OkHttpManager.Param("id", 15+""));
}, new OkHttpManager.Param("userid", mUserName), new OkHttpManager.Param("password", mPassWord));
}
}
/**
* 查看是否满足登录条件
*/
private boolean checkData() {
mUserName = mEtName.getText().toString().trim();
mPassWord = mEtPassword.getText().toString().trim();
if (TextUtils.isEmpty(mUserName.trim())) {
mEtName_design.setError("用户名不能为空");
return false;
}
if (mUserName.trim().length() < 0 || mUserName.trim().length() > 6) {
mEtName_design.setError("请输入6位数以内的用户名");
return false;
}
if (TextUtils.isEmpty(mPassWord)) {
mEtPassword_design.setError("密码不能为空");
return false;
}
return true;
}
/**
* 初始化控件 findViewById
*/
private void bindViews() {
mEtName = (EditText) findViewById(R.id.et_name);
mEtPassword = (EditText) findViewById(R.id.et_password);
mEtName_design = (TextInputLayout) findViewById(R.id.et_name_design);
mEtPassword_design = (TextInputLayout) findViewById(R.id.et_password_design);
mBtnLogin = (Button) findViewById(R.id.btn_login);
mRelLoading = (RelativeLayout) findViewById(R.id.loading);
mEtName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
mEtName_design.setErrorEnabled(false);
}
});
mEtPassword.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
mEtPassword_design.setErrorEnabled(false);
}
});
}
/**
* 初始化状态栏颜色透明,和背景色一致
*/
private void initStatusBarColor() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
}
}
/**
* 返回数据组装
*/
private LoginBeanResult getDataFromJson(String strResult) {
Gson gson = new Gson();
LoginBeanResult loginBeanResult = gson.fromJson(strResult, LoginBeanResult.class);
return loginBeanResult;
}
/**
* 检查是否登录
*/
private boolean checkLogin(){
//获取数据库用户
List<User> list = DataSupport.findAll(User.class);
if (null != list && list.size() > 0) {
//数据库user表不为空,已经登录,返回true
return true;
}
return false;
}
}
逻辑也很简单,但是有一个问题,我这样访问的
public static final String BaseUrl = "http://localhost:8080";//模拟器根接口
这样子模拟器是连接不到服务器上的,为了测试代码正确与否,我进行了下修改,我访问了我们单位以前的接口服务器,这种封装方式是可以取回来封装的数据的,
get和post都实验了,都可以,可是为甚127可以访问,但是ip不能访问,这就要明天早上起来自己看下,或者问一下同事了,
后记,写代码也有些日子了,不会的还是太多,只会写移动端,稍微接触点后天的我就不会了,这就很尴尬,还是要多学习
明天就是新的一周了,下周可能上班期间的重点就在node.js了,学习新东西毕竟是好事,在学习一个播放器就睡吧,加油少年
于是乎后记来了,用了一早上解决了这个问题,感觉吧,自己真的只是会一点点,太多的东西不会了,问的欢哥解决的,
是mysql数据库,里边的host,写的是localhost,需要改成本地ip,然后就好了
最尴尬的是,我看了一遍,没有怎么学会
Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation。保留所有权利。
C:\Users\hasee>mysql -u root -p
Enter password: ****
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
C:\Users\hasee>mysql -h 192.168.60.16 -u root -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.17-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| shopvisit |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use mysql
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
31 rows in set (0.00 sec)
mysql> show create table user
-> ;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user | CREATE TABLE `user` (
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
`User` char(32) COLLATE utf8_bin NOT NULL DEFAULT '',
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
`x509_subject` blob NOT NULL,
`max_questions` int(11) unsigned NOT NULL DEFAULT '0',
`max_updates` int(11) unsigned NOT NULL DEFAULT '0',
`max_connections` int(11) unsigned NOT NULL DEFAULT '0',
`max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
`plugin` char(64) COLLATE utf8_bin NOT NULL DEFAULT 'mysql_native_password',
`authentication_string` text COLLATE utf8_bin,
`password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`password_last_changed` timestamp NULL DEFAULT NULL,
`password_lifetime` smallint(5) unsigned DEFAULT NULL,
`account_locked` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges' |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from user where User='root';
+---------------+------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| Host | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string | password_expired | password_last_changed | password_lifetime | account_locked |
+---------------+------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| 192.168.60.16 | root | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | mysql_native_password | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | N | 2017-07-07 11:00:30 | NULL | N |
+---------------+------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
1 row in set (0.00 sec)
mysql> update user set Host=' ' where User='root'
恩,就是这样的,以前是只会sqlite,接触的mysql都少,希望以后多学点这个,
感觉自己越来越菜了