mysql 重启 及编码问题 MYSQL中文乱码以及character_set_database属性修改

Failed to start mysql.service Unit not found.

执行完yum安装命令后发现竟然无法启动错误提示如下

[root@localhost ~]# systemctl start mysql.service

Failed to start mysql.service: Unit mysql.service not found.

查了半天资料,终于了解到MariaDB代替了mysql数据库

因此用上述命令启动不起来,正确的方法如下

# yum install mariadb -y //如果已安装可以省略

# systemctl start mariadb.service //启动服务

# systemctl enable mariadb.service //开机启动服务

# mysql -u root -p //登录mysql
————————————————
版权声明:本文为CSDN博主「佐手烈焰魂」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38286347/article/details/85060407

Access denied for user 'root'@'localhost' (using password: NO)

update user set authentication_string=password('root') where Host='localhost' and User='root';
flush privileges;

 

新版本要解决这个问题,步骤大致如下:

  • 在系统偏好设置中关闭mysql服务
  • 用安全模式启动服务:sudo mysqld_safe --skip-grant-tables
  • mysql -u root 登录,因为安全模式下,所以无需输入密码
  • 登录后进行密码修改(密码修改这部分mysql做了很大的改动)
use mysql
select * from user;
update mysql.user set authentication_string=password('root') where user='root'; update mysql.user set Host='localhost' where user='root'; flush privileges; 

密码字段已经不是之前的Password,新版本改为了现在的authentication_string字段
如果不按照这个步骤会报错:Access denied for user 'root'@'localhost' (using password: NO)
最后就可以用 mysql -uroot -p 然后输入上面设置的密码登录进mysql了
官方对于重置密码的解释



作者:China_ly
链接: https://www.jianshu.com/p/aed44bff2711
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
 
 

MYSQL中文乱码以及character_set_database属性修改

 

新安装MYSQL,还没有修改数据库系统编码。

之后由于创建数据库时候:create database db_name; 没有指定编码,之后发现乱码就修改各个属性之后还是乱码,便开始配置数据库属性,之后信息如下:

+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1                       |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

发现character_set_database该属性设置utf8之后依旧还是Latin1 ,其实这个属性是数据库属性,在创建数据库时候如果不指定默认就是这个,因此对于创建的数据库可以修改数据库编码为utf8,修改脚本:

alter database <数据库名> character set utf8; 

之后还是乱码,由于之前数据错误编码,所以设置utf8依旧乱码,删除数据重新导入即可。因此为了避免此问题,以后安装数据库首要任务就是配置编码,创建数据库时候指定编码:

 
 

Mysql2::Error: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 

1、去zabbix数据库主机查看数据库字符集。

show variables like '%char%';
1

可以看到 character_set_database和character_set_server的字符集都不是utf8的所以需要进行设置。
2、修改数据库配置文件(默认在/etc/my.cnf),增加如下配置:

[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8

重启数据库
3、登录后再次执行show variables like '%char%';结果都是utf8了,如下:


4、重新导入zabbix数据模型。
————————————————
版权声明:本文为CSDN博主「宫凯宁」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44723434/article/details/89145881

-bash-4.2# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service

Failed to restart mysqld.service: Unit not found

并不存在 mysqld 的服务,

-bash-4.2# 
-bash-4.2# chkconfig -list
-list: unknown option
-bash-4.2# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use ‘systemctl list-unit-files‘.
      To see services enabled on particular target use
      ‘systemctl list-dependencies [target]‘.

aegis           0:off   1:off   2:on    3:on    4:on    5:on    6:off
agentwatch      0:off   1:off   2:on    3:on    4:on    5:on    6:off
iprdump         0:off   1:off   2:on    3:on    4:on    5:on    6:off
iprinit         0:off   1:off   2:on    3:on    4:on    5:on    6:off
iprupdate       0:off   1:off   2:on    3:on    4:on    5:on    6:off
jexec           0:off   1:on    2:on    3:on    4:on    5:on    6:off
mysql.server    0:off   1:off   2:on    3:on    4:on    5:on    6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off



新安装MYSQL,还没有修改数据库系统编码。

之后由于创建数据库时候:create database db_name; 没有指定编码,之后发现乱码就修改各个属性之后还是乱码,便开始配置数据库属性,之后信息如下:

+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1                       |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

发现character_set_database该属性设置utf8之后依旧还是Latin1 ,其实这个属性是数据库属性,在创建数据库时候如果不指定默认就是这个,因此对于创建的数据库可以修改数据库编码为utf8,修改脚本:

alter database <数据库名> character set utf8; 

之后还是乱码,由于之前数据错误编码,所以设置utf8依旧乱码,删除数据重新导入即可。因此为了避免此问题,以后安装数据库首要任务就是配置编码,创建数据库时候指定编码:

猜你喜欢

转载自www.cnblogs.com/qinyan20/p/11728493.html