您的位置:首页 > 数据库 > MySQL

mysql57 各种个人遇到问题总结

2019-07-26 14:42 148 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/l547319765/article/details/97271023

笔者的mysql是5.7版本,所以只写5.7的版本解决办法

ERROR 1130: host ‘localhost’ not allowed to connect to this MySQLserver
  1. MySQL5.7中mysql.user表比MySQL5.6少了1个字段(Password)
  2. MySQL5.7中mysql.user表比MySQL5.6多了3个字段(password_last_changed,password_lifetime,account_locked)

今天笔者突然链接不上mysql,平常的navicat已经建好的连不上,于是笔者就亲手cmd 链接数据库,发现报出了标题上出现的错误,百度后找到解决办法。
在笔者解决问题后,发现是自己mysql下的user表被清空,所有的数据都不见了,所以本机也连不上去

  1. 本机链接mysql:cmd后,输入mysql -u root -p 回车输入密码后,显示标题错误
  2. 先连接上服务器
      先打开mysql的my.ini配置文件,如果是手动解压安装mysql的,则一般my.ini在根目录下。若是按安装引导安装的,则可以去c盘下的ProgramData文件(隐藏文件来的),找到mysql的安装目录,一般my.ini就在这里。学习自百度经验(他说不给转载,可办法就那么一个,我不是照抄,应该没事吧)
    • 编辑mysql的my.ini文件,在[mysqld]下书写 skip-grant-tables 保存, 即可以连上数据库。(笔者还是靠账号密码连上的,后来想想貌似和账号密码没关系)笔者的mysqld有[],网上其他人并未写明,我还是写了吧。
    • 连上数据库后,查看自己的mysql数据库下的user表,可能每个人情况不一样吧,笔者是表被清空了。
    • 以下步骤是笔者的步骤,读者视情况而定
    • 插入root用户
      insert into user(user,host,authentication_string,ssl_type,ssl_cipher,x509_issuer,x509_subject) values('root','localhost',PASSWORD('123'),'','','','');
      
      INSERT  INTO `user`(`Host`,`User`,`authentication_string`,`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`) VALUES ('%','root','*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9','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','','N');
    • 修改用户权限
      update user set Host='localhost',select_priv='y',insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y' where user='root';commit;
    • 修改密码:
      update mysql.user set authentication_string=PASSWORD('123') where user='oldboy' and host='10.0.0.%';
    • 刷新权限
      flush privileges;

至此,笔者可以本机连上mysql了

CentOS7下mysql5.7的操作
  1. 数据库目录
    /var/lib/mysql/
  2. 配置文件
    /usr/share/mysql(mysql.server命令及配置文件)mysql5.5之后的默认安装路径,mysql5.5之前的是/usr/local/mysql
  3. 相关命令
    /usr/bin(mysqladmin mysqldump等命令)
  4. 启动脚本
    /etc/rc.d/init.d/(启动脚本文件mysql的目录)
  5. mysql的启动和关闭
    systemctl status mysqld.service
    查看状态
    systemctl restart mysqld.service
    重启
  6. 设置外界用户链接权限 grant all privileges on . to ‘root’@’%’ identified by ‘password’;
    grant all privileges on . to ‘yang’@’%’ with grant option;
    2选1
  7. flush privileges;
  • 修改密码安全等级
    //设置安全级别
    set global validate_password_policy=0;
    //设置最小长度
    set global validate_password_length=4;
  • 修改登录密码(笔者并不是这个方法修改密码的,另一个方法在我的另一篇博文里)
    MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。
    4.1 命令
    usr/bin/mysqladmin -u root password ‘new-password’
    格式:mysqladmin -u用户名 -p旧密码 password 新密码
    4.2 例子
    例1:给root加个密码123456。
    键入以下命令 :
    [root@test1 local]# /usr/bin/mysqladmin -u root password 123456
  • MySQL重置自增id转自
    1. 【将表里的id列,取消自增,取消主键】
      ALTER TABLE csMODIFY COLUMN id int(11) NOT NULL FIRST ,DROP PRIMARY KEY;
    2. 【新增id2列,自增,主键。名字可以随意,别重复。】
      ALTER TABLE csADD COLUMN id2 int NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id2);
    3. 【删除id列】
      ALTER TABLE csDROP COLUMN id;
    4. 【把id2改为id1】
      ALTER TABLE csCHANGE COLUMN id2 id int(11) NOT NULL AUTO_INCREMENT FIRST ;
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: